cgse 2024.7.0__py3-none-any.whl → 2025.0.1__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.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.1.dist-info/METADATA +38 -0
- cgse-2025.0.1.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.1.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
egse/dsi/rmap.py
DELETED
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
This module provides a Python interface to RMAP command packets.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
# Originally, the RMAP functions were wrappers to functions defined in a C library. However, that
|
|
6
|
-
# library is not maintained anymore by 4Links, and we have now converted all functionality into
|
|
7
|
-
# Python functions. The functions depend heavily on a C structure which we had to re-define using
|
|
8
|
-
# the Structure class provided by ctypes. The RMAP Python functions are defined in `egse.rmap`.
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import ctypes
|
|
12
|
-
import logging
|
|
13
|
-
import textwrap
|
|
14
|
-
from contextlib import contextmanager
|
|
15
|
-
from ctypes import c_int
|
|
16
|
-
from dataclasses import dataclass
|
|
17
|
-
|
|
18
|
-
import rich
|
|
19
|
-
|
|
20
|
-
import egse.dsi.constants as constants
|
|
21
|
-
import egse.rmap
|
|
22
|
-
import egse.spw
|
|
23
|
-
from egse.dsi.esl import esl_get_product_string
|
|
24
|
-
from egse.settings import Settings
|
|
25
|
-
|
|
26
|
-
rich.print("Loading egse.dsi.rmap package...", flush=True)
|
|
27
|
-
|
|
28
|
-
LOGGER = logging.getLogger(__name__)
|
|
29
|
-
|
|
30
|
-
dsi_settings = Settings.load("DSI")
|
|
31
|
-
|
|
32
|
-
# Maintain a transmit and a receive buffer
|
|
33
|
-
|
|
34
|
-
rxbuf = ctypes.create_string_buffer(dsi_settings.RX_BUFFER_LENGTH)
|
|
35
|
-
txbuf = ctypes.create_string_buffer(dsi_settings.TX_BUFFER_LENGTH)
|
|
36
|
-
|
|
37
|
-
# Initialize the status variable which is a c pointer that is set by the library routines to
|
|
38
|
-
# pass a status.
|
|
39
|
-
|
|
40
|
-
# status = c_int(0)
|
|
41
|
-
# status_p = ctypes.pointer(status)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
@dataclass
|
|
45
|
-
class ESL_RMAP:
|
|
46
|
-
spw_device = None
|
|
47
|
-
target_key = 0
|
|
48
|
-
target_logical_address = 0xFE
|
|
49
|
-
target_spw_address = 0x00
|
|
50
|
-
target_spw_address_len = 0
|
|
51
|
-
reply_spw_address = 0x00
|
|
52
|
-
reply_spw_address_len = 0
|
|
53
|
-
initiator_logical_address = 0xFE
|
|
54
|
-
transaction_identifier = 99
|
|
55
|
-
ESL_RMAP_error = 0
|
|
56
|
-
|
|
57
|
-
def __str__(self):
|
|
58
|
-
return textwrap.dedent(
|
|
59
|
-
f"""\
|
|
60
|
-
spw_device={self.spw_device}
|
|
61
|
-
target_key={self.target_key}
|
|
62
|
-
target_logical_address={self.target_logical_address}
|
|
63
|
-
target_spw_address={self.target_spw_address}
|
|
64
|
-
target_spw_address_len={self.target_spw_address_len}
|
|
65
|
-
reply_spw_address={self.reply_spw_address}
|
|
66
|
-
reply_spw_address_len={self.reply_spw_address_len}
|
|
67
|
-
initiator_logical_address={self.initiator_logical_address}
|
|
68
|
-
transaction_identifier={self.transaction_identifier}
|
|
69
|
-
ESL_RMAP_error={self.ESL_RMAP_error}
|
|
70
|
-
"""
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
@contextmanager
|
|
75
|
-
def rmap_connection(esl_link):
|
|
76
|
-
"""
|
|
77
|
-
Context manager that opens an RMAP connection on the EtherSpaceLink ESL.
|
|
78
|
-
|
|
79
|
-
Args:
|
|
80
|
-
esl_link (ESL): the ESL structure that defines the connection to the DSI
|
|
81
|
-
|
|
82
|
-
Returns:
|
|
83
|
-
an RMAP link connection.
|
|
84
|
-
"""
|
|
85
|
-
rmap_link = rmap_open_connection(esl_link)
|
|
86
|
-
yield rmap_link
|
|
87
|
-
|
|
88
|
-
rmap_close_connection(rmap_link)
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
def rmap_initialise(esl_link) -> ESL_RMAP:
|
|
92
|
-
"""
|
|
93
|
-
Initialise the RMAP structure with predefined settings for PLATO.
|
|
94
|
-
"""
|
|
95
|
-
esl_rmap: ESL_RMAP = ESL_RMAP()
|
|
96
|
-
|
|
97
|
-
esl_rmap.spw_device = esl_link
|
|
98
|
-
esl_rmap.target_key = 0x00
|
|
99
|
-
esl_rmap.target_logical_address = 0xFE
|
|
100
|
-
esl_rmap.target_spw_address = 0x00
|
|
101
|
-
esl_rmap.target_spw_address_len = 0
|
|
102
|
-
esl_rmap.reply_spw_address = 0x0
|
|
103
|
-
esl_rmap.reply_spw_address_len = 0
|
|
104
|
-
esl_rmap.initiator_logical_address = 0xFE
|
|
105
|
-
esl_rmap.transaction_identifier = 99
|
|
106
|
-
esl_rmap.ESL_RMAP_error = 99
|
|
107
|
-
|
|
108
|
-
return esl_rmap
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
def rmap_open_connection(esl_link):
|
|
112
|
-
"""
|
|
113
|
-
Initialises and opens an RMAP connection on an EtherSpaceLink (ESL) connection.
|
|
114
|
-
|
|
115
|
-
This requires a valid link to an ESL connection which shall be created with the following
|
|
116
|
-
command:
|
|
117
|
-
|
|
118
|
-
esl_link = esl_open_connection(<DSI IP Address>)
|
|
119
|
-
|
|
120
|
-
Args:
|
|
121
|
-
esl_link: a connection link to the DSI SpaceWire interface
|
|
122
|
-
|
|
123
|
-
Returns:
|
|
124
|
-
The RMAP connection link.
|
|
125
|
-
|
|
126
|
-
"""
|
|
127
|
-
|
|
128
|
-
LOGGER.info(f"Open and setup RMAP connection to {esl_get_product_string(esl_link)}")
|
|
129
|
-
|
|
130
|
-
rmap_link = rmap_initialise(esl_link)
|
|
131
|
-
|
|
132
|
-
LOGGER.info("RMAP connection opened successfully.")
|
|
133
|
-
|
|
134
|
-
return rmap_link
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
def rmap_close_connection(rmap_link):
|
|
138
|
-
LOGGER.info("RMAP connection closed successfully.")
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
def rmap_configure(rmap_link: ESL_RMAP, initiator_logical_address,
|
|
142
|
-
target_key=constants.RMAP_TARGET_KEY,
|
|
143
|
-
target_logical_address=constants.RMAP_TARGET_LOGICAL_ADDRESS_DEFAULT):
|
|
144
|
-
"""
|
|
145
|
-
Configure the RMAP EtherSpaceWire link.
|
|
146
|
-
|
|
147
|
-
Args:
|
|
148
|
-
rmap_link: the RMAP link connection
|
|
149
|
-
initiator_logical_address: logical address of the SpaceWire node that starts the transaction
|
|
150
|
-
target_key: the key field used for command authorisation
|
|
151
|
-
target_logical_address: logical address of the target node (default: 0xFE)
|
|
152
|
-
|
|
153
|
-
Returns:
|
|
154
|
-
Nothing
|
|
155
|
-
|
|
156
|
-
"""
|
|
157
|
-
rmap_link.initiator_logical_address = initiator_logical_address
|
|
158
|
-
rmap_link.target_key = target_key
|
|
159
|
-
rmap_link.target_logical_address = target_logical_address
|
|
160
|
-
rmap_link.target_spw_address = 0x0
|
|
161
|
-
rmap_link.target_spw_address_len = 0
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
# This function is not used anywhere, but I don't want to delete it yet because it was originally converted from
|
|
165
|
-
# the C code provided by 4Links and contains the logic that shall be used to process RMAP packets.
|
|
166
|
-
# I leave it here for future use or inspection.
|
|
167
|
-
|
|
168
|
-
def process_rmap_commands(rmap_link: ESL_RMAP):
|
|
169
|
-
# Leave these imports here because they are only used by this function
|
|
170
|
-
|
|
171
|
-
from egse.bits import crc_calc
|
|
172
|
-
from egse.dsi import constants
|
|
173
|
-
from egse.dsi.esl import ESLError
|
|
174
|
-
from egse.dsi.esl import esl_flush
|
|
175
|
-
from egse.dsi.esl import esl_get_esl_error
|
|
176
|
-
from egse.dsi.esl import esl_read_packet
|
|
177
|
-
from egse.dsi.esl import esl_write_packet
|
|
178
|
-
from egse.dsi.esl import get_extension_name
|
|
179
|
-
from egse.dsi.esl import get_terminator_name
|
|
180
|
-
from egse.dsi.esl import is_extension_code
|
|
181
|
-
from egse.dsi.esl import is_terminator_code
|
|
182
|
-
from egse.dsi.spw import handle_extension_packet
|
|
183
|
-
from egse.dsi.spw import handle_special_packet
|
|
184
|
-
from egse.rmap import create_rmap_read_request_reply_packet
|
|
185
|
-
from egse.spw import CheckError
|
|
186
|
-
from egse.spw import check_data_crc
|
|
187
|
-
from egse.spw import check_header_crc
|
|
188
|
-
from egse.spw import check_initiator_logical_address
|
|
189
|
-
from egse.spw import check_instruction
|
|
190
|
-
from egse.spw import check_key
|
|
191
|
-
from egse.spw import check_protocol_id
|
|
192
|
-
from egse.spw import check_target_logical_address
|
|
193
|
-
from egse.spw import get_address
|
|
194
|
-
from egse.spw import get_data_length
|
|
195
|
-
from egse.spw import get_instruction_field
|
|
196
|
-
from egse.spw import get_transaction_identifier
|
|
197
|
-
from egse.spw import is_command
|
|
198
|
-
from egse.spw import is_increment
|
|
199
|
-
from egse.spw import is_write
|
|
200
|
-
|
|
201
|
-
total_received = 0
|
|
202
|
-
packet = bytes()
|
|
203
|
-
|
|
204
|
-
esl_link = rmap_link.spw_device
|
|
205
|
-
|
|
206
|
-
terminator, rx_buffer = esl_read_packet(esl_link)
|
|
207
|
-
bytes_received = len(rx_buffer)
|
|
208
|
-
|
|
209
|
-
if is_terminator_code(terminator):
|
|
210
|
-
LOGGER.debug(
|
|
211
|
-
f"bytes received={bytes_received}, terminator={terminator} "
|
|
212
|
-
f"[{get_terminator_name(terminator)}]"
|
|
213
|
-
)
|
|
214
|
-
elif is_extension_code(terminator):
|
|
215
|
-
LOGGER.debug(
|
|
216
|
-
f"bytes received={bytes_received}, terminator={terminator} "
|
|
217
|
-
f"[{get_extension_name(terminator)}]"
|
|
218
|
-
)
|
|
219
|
-
else:
|
|
220
|
-
LOGGER.debug(f"bytes received={bytes_received}, terminator={terminator}")
|
|
221
|
-
|
|
222
|
-
# TODO:
|
|
223
|
-
# When the link is closed from the other end (dpusim) just one byte (b'\x08') is received.
|
|
224
|
-
# So, we should try to restart the link...
|
|
225
|
-
|
|
226
|
-
if bytes_received == 1:
|
|
227
|
-
LOGGER.warning("Link was closed from the initiator side, terminating.")
|
|
228
|
-
return
|
|
229
|
-
|
|
230
|
-
# First check if we encountered any errors or shutdown,
|
|
231
|
-
# if True then break the main while loop and end the connection
|
|
232
|
-
#
|
|
233
|
-
# FIXME:
|
|
234
|
-
# We need better handling of exceptional conditions here since the FEE Simulator can never
|
|
235
|
-
# die.
|
|
236
|
-
# - what shall we do when a shutdown is received?
|
|
237
|
-
# - what shall we do when a timeout has occured?
|
|
238
|
-
# - what shall we do with a buffer overflow? When can this happen?
|
|
239
|
-
# - some errors are related to the virtual DSI, how do we solve those?
|
|
240
|
-
|
|
241
|
-
if bytes_received < 0:
|
|
242
|
-
error = esl_get_esl_error(esl_link)
|
|
243
|
-
if error == constants.ESL_ERROR_TIMEOUT:
|
|
244
|
-
LOGGER.debug("Received a timeout, continuing...")
|
|
245
|
-
return
|
|
246
|
-
# FIXME: We should handle all these cases in a simpler way
|
|
247
|
-
if error == constants.ESL_ERROR_RECEIVER_SHUTDOWN:
|
|
248
|
-
LOGGER.info("Shutdown detected.")
|
|
249
|
-
return
|
|
250
|
-
if error == constants.ESL_ERROR_BUFFER_OVERFLOW:
|
|
251
|
-
# FIXME: Can we recover from this situation?
|
|
252
|
-
LOGGER.error("Insufficient buffer to read full packet, bailing out.")
|
|
253
|
-
return
|
|
254
|
-
if error == constants.ESL_ERROR_RECFILE_WRITE:
|
|
255
|
-
LOGGER.error("Write error on record file, bailing out.")
|
|
256
|
-
return
|
|
257
|
-
|
|
258
|
-
LOGGER.error(
|
|
259
|
-
f"read_packet: returned error, "
|
|
260
|
-
f"ESL error = {constants.esl_error_codes[error]} [{error}]"
|
|
261
|
-
)
|
|
262
|
-
return
|
|
263
|
-
|
|
264
|
-
# When we receive an unknown terminator we just ignore, log the error and continue...
|
|
265
|
-
|
|
266
|
-
if terminator not in (
|
|
267
|
-
constants.ESL_EXTN,
|
|
268
|
-
constants.ESL_SPECIAL,
|
|
269
|
-
constants.ESL_PART_EOP_EEP,
|
|
270
|
-
constants.ESL_PART_EXTN,
|
|
271
|
-
constants.ESL_PART_SPECIAL,
|
|
272
|
-
constants.ESL_EEP,
|
|
273
|
-
constants.ESL_EOP,
|
|
274
|
-
):
|
|
275
|
-
LOGGER.error(f"Unknown terminator [{terminator}] received.")
|
|
276
|
-
return
|
|
277
|
-
|
|
278
|
-
if terminator == constants.ESL_EXTN:
|
|
279
|
-
handle_extension_packet(rx_buffer, bytes_received)
|
|
280
|
-
|
|
281
|
-
if terminator == constants.ESL_SPECIAL:
|
|
282
|
-
handle_special_packet(rx_buffer, bytes_received)
|
|
283
|
-
|
|
284
|
-
if terminator in (
|
|
285
|
-
constants.ESL_PART_EOP_EEP,
|
|
286
|
-
constants.ESL_PART_EXTN,
|
|
287
|
-
constants.ESL_PART_SPECIAL,
|
|
288
|
-
):
|
|
289
|
-
LOGGER.debug("Partial Data Packet received.")
|
|
290
|
-
|
|
291
|
-
total_received += bytes_received
|
|
292
|
-
packet += rx_buffer[:bytes_received]
|
|
293
|
-
|
|
294
|
-
# FIXME:
|
|
295
|
-
# at this point we need to go for the next part of the packet
|
|
296
|
-
# continue was used in the while loop before splitting off this code. We now do a
|
|
297
|
-
# return, but we loose information on the total packet size etc.
|
|
298
|
-
return
|
|
299
|
-
|
|
300
|
-
if terminator == constants.ESL_EEP:
|
|
301
|
-
LOGGER.debug("Error End of Packet returned by DSI")
|
|
302
|
-
|
|
303
|
-
if terminator == constants.ESL_EOP:
|
|
304
|
-
LOGGER.debug("Normal End of Packet returned by DSI")
|
|
305
|
-
|
|
306
|
-
total_received += bytes_received
|
|
307
|
-
packet += rx_buffer[:bytes_received]
|
|
308
|
-
|
|
309
|
-
LOGGER.debug(f"total_received={total_received}")
|
|
310
|
-
LOGGER.debug(f"{packet}")
|
|
311
|
-
|
|
312
|
-
# Deal with RMAP request packet
|
|
313
|
-
# FIXME: shouldn't this all be checked on packet instead of rx_buffer?
|
|
314
|
-
|
|
315
|
-
try:
|
|
316
|
-
# Run a number of checks on the received packet
|
|
317
|
-
|
|
318
|
-
check_target_logical_address(rx_buffer, dsi_settings.TARGET_LOGICAL_ADDRESS)
|
|
319
|
-
check_protocol_id(rx_buffer)
|
|
320
|
-
check_instruction(rx_buffer)
|
|
321
|
-
check_key(rx_buffer, rmap_link.target_key)
|
|
322
|
-
check_initiator_logical_address(rx_buffer, dsi_settings.INITIATOR_LOGICAL_ADDRESS)
|
|
323
|
-
check_header_crc(rx_buffer)
|
|
324
|
-
|
|
325
|
-
# Extract information from the packet that we need further on
|
|
326
|
-
|
|
327
|
-
tid = get_transaction_identifier(rx_buffer)
|
|
328
|
-
address = get_address(rx_buffer)
|
|
329
|
-
data_length = get_data_length(rx_buffer)
|
|
330
|
-
except CheckError as ce:
|
|
331
|
-
LOGGER.error(f"{ce.message}, status = {ce.status}")
|
|
332
|
-
status = ce.status
|
|
333
|
-
# FIXME:
|
|
334
|
-
# Something is wrong with the packet here, do proper exception handling.
|
|
335
|
-
# We are not anymore in the while loop after we have split off this code,
|
|
336
|
-
# so continue doesn't work anymore...
|
|
337
|
-
# continue
|
|
338
|
-
raise ce
|
|
339
|
-
|
|
340
|
-
# Do something with the packet received
|
|
341
|
-
|
|
342
|
-
instruction_field = get_instruction_field(packet)
|
|
343
|
-
|
|
344
|
-
if is_command(instruction_field):
|
|
345
|
-
|
|
346
|
-
status = constants.RMAP_SUCCESS
|
|
347
|
-
|
|
348
|
-
if (
|
|
349
|
-
not dsi_settings.RMAP_BASE_ADDRESS
|
|
350
|
-
<= address
|
|
351
|
-
< (dsi_settings.RMAP_BASE_ADDRESS + dsi_settings.RMAP_MEMORY_SIZE)
|
|
352
|
-
):
|
|
353
|
-
LOGGER.error(f"ERROR: Access outside of RMAP memory area, address=0x{address:010X}")
|
|
354
|
-
status = constants.RMAP_GENERAL_ERROR
|
|
355
|
-
|
|
356
|
-
# Handling an RMAP Write Command
|
|
357
|
-
#
|
|
358
|
-
# - Send a reply
|
|
359
|
-
# - Check Data CRC before writing
|
|
360
|
-
# - Write the data into memory
|
|
361
|
-
|
|
362
|
-
if is_write(instruction_field):
|
|
363
|
-
|
|
364
|
-
LOGGER.debug("RMAP write command received, sending reply packet...")
|
|
365
|
-
|
|
366
|
-
# FIXME: need some work here!!!!
|
|
367
|
-
|
|
368
|
-
# Create the target memory map and fill it with a pattern.
|
|
369
|
-
# This is just to simplify checking the correct write command.
|
|
370
|
-
# TODO: this should be replaced with the RegistryMap
|
|
371
|
-
|
|
372
|
-
rmap_target_memory = ctypes.create_string_buffer(
|
|
373
|
-
bytes([x & 0xFF for x in range(dsi_settings.RMAP_MEMORY_SIZE)])
|
|
374
|
-
)
|
|
375
|
-
|
|
376
|
-
tx_buffer = ctypes.create_string_buffer(dsi_settings.TX_BUFFER_LENGTH)
|
|
377
|
-
|
|
378
|
-
tx_buffer[7] = crc_calc(tx_buffer, 0, 7)
|
|
379
|
-
|
|
380
|
-
result = esl_write_packet(esl_link, tx_buffer, 8, constants.ESL_EOP)
|
|
381
|
-
|
|
382
|
-
esl_flush(esl_link)
|
|
383
|
-
|
|
384
|
-
# When no errors, then write the data into memory at the given position
|
|
385
|
-
|
|
386
|
-
if status == constants.RMAP_SUCCESS:
|
|
387
|
-
|
|
388
|
-
# Check the Data CRC
|
|
389
|
-
|
|
390
|
-
try:
|
|
391
|
-
check_data_crc(rx_buffer)
|
|
392
|
-
except CheckError as ce:
|
|
393
|
-
LOGGER.error(f"{ce}, status = {ce.status}")
|
|
394
|
-
raise ce
|
|
395
|
-
|
|
396
|
-
# Write the data into the target memory map
|
|
397
|
-
|
|
398
|
-
# FIXME: I do not understand why this is !!!!
|
|
399
|
-
|
|
400
|
-
if is_increment(instruction_field):
|
|
401
|
-
# change this code to work with RegisterMap
|
|
402
|
-
# rmap_target_memory[address:address + data_length] = get_data(rx_buffer)
|
|
403
|
-
pass
|
|
404
|
-
else:
|
|
405
|
-
# change this code to work with RegisterMap
|
|
406
|
-
# Overwrite all the data into the same memory address, why?
|
|
407
|
-
# for b in get_data(rx_buffer):
|
|
408
|
-
# rmap_target_memory[address] = b
|
|
409
|
-
pass
|
|
410
|
-
|
|
411
|
-
# Handling an RMAP Read Command
|
|
412
|
-
|
|
413
|
-
else:
|
|
414
|
-
if status:
|
|
415
|
-
data_length = 0
|
|
416
|
-
|
|
417
|
-
LOGGER.warning(
|
|
418
|
-
"Commented out this code, work needs to be done on RMAP read command"
|
|
419
|
-
)
|
|
420
|
-
# data = self.register_map.get_data(address, data_length)
|
|
421
|
-
data = b"\x00\x01\x02\x03"
|
|
422
|
-
|
|
423
|
-
tx_buffer = create_rmap_read_request_reply_packet(instruction_field, tid, status, data, data_length)
|
|
424
|
-
|
|
425
|
-
result = esl_write_packet(esl_link, tx_buffer, len(tx_buffer), constants.ESL_EOP)
|
|
426
|
-
|
|
427
|
-
result = esl_flush(
|
|
428
|
-
esl_link
|
|
429
|
-
) # FIXME: This will mask previous ESL_error if there was one
|
|
430
|
-
|
|
431
|
-
if result:
|
|
432
|
-
raise ESLError(
|
|
433
|
-
f"Could not write the packet, "
|
|
434
|
-
f"ESL error code = {constants.esl_error_codes[esl_link.contents.ESL_error]} "
|
|
435
|
-
f"[{esl_link.contents.ESL_error}]"
|
|
436
|
-
)
|
|
437
|
-
|
|
438
|
-
else:
|
|
439
|
-
LOGGER.warning("The packet is not an RMAP read/write command.")
|
|
440
|
-
|
|
441
|
-
total_received = 0
|
|
442
|
-
packet = bytes()
|
|
443
|
-
|
|
444
|
-
LOGGER.debug("Going for the next SpaceWire packet...")
|
egse/dsi/rmapci.py
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# RMAP Configuration Interface
|
|
2
|
-
#
|
|
3
|
-
# This file implements functions to easily create the packets send over the RMAP protocol
|
|
4
|
-
# for the DPU-FEE interface.
|
|
5
|
-
#
|
|
6
|
-
# Please check the document PLATO-DLR-PL-IC-0002 v1.0 [25/09/2018] for reference.
|
|
7
|
-
# The RMAP Verified Write Request Packet Structure is defined on page 26 with req. FEE-DPU-IF-582.
|
|
8
|
-
|
|
9
|
-
from egse.dsi.rmap import ESL_RMAP
|
|
10
|
-
from egse.dsi.constants import RMAP_PROTOCOL_ID
|
|
11
|
-
from egse.rmap import rmap_crc_check
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
# FIXME: We could just use the rmap_write(..) command for this, but that currently doesn't have verify before write etc.
|
|
15
|
-
# It more looks like the RMAP interface to the device can also (better) be implemented in Python.
|
|
16
|
-
|
|
17
|
-
def write_critical_configuration_data(rmap_link: ESL_RMAP, buf, tid, addr, data):
|
|
18
|
-
buf[0] = rmap_link.target_logical_address
|
|
19
|
-
buf[1] = RMAP_PROTOCOL_ID
|
|
20
|
-
buf[2] = 0x7C # Instruction: RMAP Request, write, incrementing address, verify before write, and send reply, reply addr length=0
|
|
21
|
-
buf[3] = 0xD1 # Key:
|
|
22
|
-
buf[4] = rmap_link.initiator_logical_address
|
|
23
|
-
buf[5] = (tid >> 8) & 0xFF # MSB of the Transition ID
|
|
24
|
-
buf[6] = (tid) & 0xFF # LSB of the Transition ID
|
|
25
|
-
buf[7] = (addr >> 32) & 0xFF # Extended address
|
|
26
|
-
buf[8] = (addr >> 24) & 0xFF # address (MSB)
|
|
27
|
-
buf[9] = (addr >> 16) & 0xFF # address
|
|
28
|
-
buf[10] = (addr >> 8) & 0xFF # address
|
|
29
|
-
buf[11] = (addr ) & 0xFF # address (LSB)
|
|
30
|
-
buf[12] = 0x00 # data length (MSB)
|
|
31
|
-
buf[13] = 0x00 # data length, fixed to 4 bytes for critical configuration parameters
|
|
32
|
-
buf[14] = 0x04 # data length (LSB)
|
|
33
|
-
buf[15] = rmap_crc_check(buf, 0, 15)
|
|
34
|
-
buf[16] = (data >> 24) & 0xFF # data (MSB)
|
|
35
|
-
buf[17] = (data >> 16) & 0xFF # data
|
|
36
|
-
buf[18] = (data >> 8) & 0xFF # data
|
|
37
|
-
buf[19] = (data ) & 0xFF # data (LSB)
|
|
38
|
-
buf[20] = rmap_crc_check(buf, 16, 4)
|
|
39
|
-
return buf
|