cgse 2024.7.0__py3-none-any.whl → 2025.0.2__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.2.dist-info/METADATA +38 -0
- cgse-2025.0.2.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.2.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/dpu/hk_ui.py
DELETED
|
@@ -1,468 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
|
|
3
|
-
from PyQt5.QtCore import Qt
|
|
4
|
-
from PyQt5.QtWidgets import QGridLayout
|
|
5
|
-
from PyQt5.QtWidgets import QGroupBox
|
|
6
|
-
from PyQt5.QtWidgets import QHBoxLayout
|
|
7
|
-
from PyQt5.QtWidgets import QLabel
|
|
8
|
-
from PyQt5.QtWidgets import QLineEdit
|
|
9
|
-
from PyQt5.QtWidgets import QVBoxLayout
|
|
10
|
-
from PyQt5.QtWidgets import QWidget
|
|
11
|
-
|
|
12
|
-
from egse.bits import bit_set
|
|
13
|
-
from egse.fee.nfee import HousekeepingData
|
|
14
|
-
from egse.gui.led import Indic
|
|
15
|
-
from egse.gui.led import LED
|
|
16
|
-
from egse.spw import HousekeepingPacket
|
|
17
|
-
|
|
18
|
-
try:
|
|
19
|
-
_ = os.environ["PLATO_CAMERA_IS_EM"]
|
|
20
|
-
PLATO_CAMERA_IS_EM = True if _.capitalize() in ("1", "True", "Yes") else 0
|
|
21
|
-
except KeyError:
|
|
22
|
-
PLATO_CAMERA_IS_EM = False
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class _CCDVoltages(QGroupBox):
|
|
26
|
-
|
|
27
|
-
def __init__(self, *args, **kwargs):
|
|
28
|
-
super().__init__("CCD Voltages", *args, **kwargs)
|
|
29
|
-
|
|
30
|
-
self._fields = {}
|
|
31
|
-
|
|
32
|
-
layout = QGridLayout()
|
|
33
|
-
layout.setContentsMargins(5, 5, 5, 5)
|
|
34
|
-
layout.setSpacing(5)
|
|
35
|
-
|
|
36
|
-
for col, name in enumerate(["CCD1", "CCD2", "CCD3", "CCD4"]):
|
|
37
|
-
label = QLabel(name)
|
|
38
|
-
label.setAlignment(Qt.AlignHCenter)
|
|
39
|
-
layout.addWidget(label, 0, col * 2 + 1)
|
|
40
|
-
|
|
41
|
-
self.ccd_fields_layout = [{}, {}, {}, {}]
|
|
42
|
-
|
|
43
|
-
for ccd_number in range(1, 5):
|
|
44
|
-
if PLATO_CAMERA_IS_EM:
|
|
45
|
-
self.ccd_fields_layout[ccd_number - 1]["VOD"] = [f"CCD{ccd_number}_VOD_MON", 1, 2 * (ccd_number - 1)]
|
|
46
|
-
index = 2
|
|
47
|
-
else:
|
|
48
|
-
self.ccd_fields_layout[ccd_number - 1]["VOD_E"] = [f"CCD{ccd_number}_VOD_MON_E", 1, 2 * (ccd_number - 1)]
|
|
49
|
-
self.ccd_fields_layout[ccd_number - 1]["VOD_F"] = [f"CCD{ccd_number}_VOD_MON_F", 2, 2 * (ccd_number - 1)]
|
|
50
|
-
index = 3
|
|
51
|
-
|
|
52
|
-
self.ccd_fields_layout[ccd_number - 1]["VOG"] = [f"CCD{ccd_number}_VOG_MON", index, 2 * (ccd_number - 1)]
|
|
53
|
-
index += 1
|
|
54
|
-
self.ccd_fields_layout[ccd_number - 1]["VDD"] = [f"CCD{ccd_number}_VDD_MON", index, 2 * (ccd_number - 1)]
|
|
55
|
-
index += 1
|
|
56
|
-
self.ccd_fields_layout[ccd_number - 1]["VGD"] = [f"CCD{ccd_number}_VGD_MON", index, 2 * (ccd_number - 1)]
|
|
57
|
-
index += 1
|
|
58
|
-
self.ccd_fields_layout[ccd_number - 1]["VRD_E"] = [f"CCD{ccd_number}_VRD_MON_E", index, 2 * (ccd_number - 1)]
|
|
59
|
-
index += 1
|
|
60
|
-
self.ccd_fields_layout[ccd_number - 1]["VRD_F"] = [f"CCD{ccd_number}_VRD_MON_F", index, 2 * (ccd_number - 1)]
|
|
61
|
-
|
|
62
|
-
for fields in (self.ccd_fields_layout):
|
|
63
|
-
for par, x in fields.items():
|
|
64
|
-
self._fields[x[0]] = field = QLineEdit()
|
|
65
|
-
field.setMinimumWidth(60)
|
|
66
|
-
field.setAlignment(Qt.AlignRight)
|
|
67
|
-
field.setReadOnly(True)
|
|
68
|
-
label = QLabel(str(par))
|
|
69
|
-
label.setAlignment(Qt.AlignRight)
|
|
70
|
-
layout.addWidget(label, x[1], x[2])
|
|
71
|
-
layout.addWidget(field, x[1], x[2] + 1)
|
|
72
|
-
|
|
73
|
-
self.setLayout(layout)
|
|
74
|
-
|
|
75
|
-
@property
|
|
76
|
-
def fields(self):
|
|
77
|
-
return self._fields
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
class _NFEETemperatures(QGroupBox):
|
|
81
|
-
N_FEE_FIELDS_LAYOUT = {
|
|
82
|
-
"PRT1": ["PRT1", 1, 0],
|
|
83
|
-
"PRT2": ["PRT2", 2, 0],
|
|
84
|
-
"PRT3": ["PRT3", 3, 0],
|
|
85
|
-
"PRT4": ["PRT4", 4, 0],
|
|
86
|
-
"PRT5": ["PRT5", 5, 0],
|
|
87
|
-
|
|
88
|
-
"CCD1": ["CCD1_TS", 1, 2],
|
|
89
|
-
"CCD2": ["CCD2_TS", 2, 2],
|
|
90
|
-
"CCD3": ["CCD3_TS", 3, 2],
|
|
91
|
-
"CCD4": ["CCD4_TS", 4, 2],
|
|
92
|
-
|
|
93
|
-
"T_A": ["TSENSE_A", 6, 0],
|
|
94
|
-
"T_B": ["TSENSE_B", 6, 2],
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
def __init__(self, *args, **kwargs):
|
|
98
|
-
super().__init__("Temperatures", *args, **kwargs)
|
|
99
|
-
|
|
100
|
-
self._fields = {}
|
|
101
|
-
|
|
102
|
-
layout = QGridLayout()
|
|
103
|
-
layout.setContentsMargins(5, 5, 5, 5)
|
|
104
|
-
layout.setSpacing(5)
|
|
105
|
-
|
|
106
|
-
# The next line is to line-up with the CCD Voltages which have header
|
|
107
|
-
|
|
108
|
-
layout.addWidget(QLabel(), 0, 0)
|
|
109
|
-
|
|
110
|
-
for par, x in self.N_FEE_FIELDS_LAYOUT.items():
|
|
111
|
-
self._fields[x[0]] = field = QLineEdit()
|
|
112
|
-
field.setMinimumWidth(60)
|
|
113
|
-
field.setAlignment(Qt.AlignRight)
|
|
114
|
-
field.setReadOnly(True)
|
|
115
|
-
label = QLabel(str(par))
|
|
116
|
-
label.setAlignment(Qt.AlignRight)
|
|
117
|
-
layout.addWidget(label, x[1], x[2])
|
|
118
|
-
layout.addWidget(field, x[1], x[2] + 1)
|
|
119
|
-
|
|
120
|
-
self.setLayout(layout)
|
|
121
|
-
|
|
122
|
-
@property
|
|
123
|
-
def fields(self):
|
|
124
|
-
return self._fields
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
class _SpaceWireStatus(QGroupBox):
|
|
128
|
-
N_FEE_FIELDS_LAYOUT = {
|
|
129
|
-
"op_mode": [0, 0],
|
|
130
|
-
"frame_counter": [1, 0],
|
|
131
|
-
"frame_number": [2, 0],
|
|
132
|
-
"FPGA minor version": [0, 2],
|
|
133
|
-
"FPGA major version": [1, 2],
|
|
134
|
-
"Board ID": [2, 2],
|
|
135
|
-
"spw_timecode": [0, 4],
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
def __init__(self, *args, **kwargs):
|
|
139
|
-
super().__init__("SpW Status", *args, **kwargs)
|
|
140
|
-
|
|
141
|
-
self._fields = {}
|
|
142
|
-
|
|
143
|
-
layout = QGridLayout()
|
|
144
|
-
layout.setContentsMargins(5, 5, 5, 5)
|
|
145
|
-
layout.setSpacing(5)
|
|
146
|
-
|
|
147
|
-
for par, x in self.N_FEE_FIELDS_LAYOUT.items():
|
|
148
|
-
self._fields[par] = field = QLineEdit()
|
|
149
|
-
field.setAlignment(Qt.AlignRight)
|
|
150
|
-
field.setReadOnly(True)
|
|
151
|
-
layout.addWidget(QLabel(par), x[0], x[1])
|
|
152
|
-
layout.addWidget(field, x[0], x[1] + 1)
|
|
153
|
-
|
|
154
|
-
self.setLayout(layout)
|
|
155
|
-
|
|
156
|
-
@property
|
|
157
|
-
def fields(self):
|
|
158
|
-
return self._fields
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
class _TOUSensors(QGroupBox):
|
|
162
|
-
N_FEE_FIELDS_LAYOUT = {
|
|
163
|
-
1: [0, 0],
|
|
164
|
-
2: [1, 0],
|
|
165
|
-
3: [2, 0],
|
|
166
|
-
4: [0, 2],
|
|
167
|
-
5: [1, 2],
|
|
168
|
-
6: [2, 2],
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
def __init__(self, *args, **kwargs):
|
|
172
|
-
super().__init__("TOU Sensors", *args, **kwargs)
|
|
173
|
-
|
|
174
|
-
self._fields = {}
|
|
175
|
-
|
|
176
|
-
layout = QGridLayout()
|
|
177
|
-
layout.setContentsMargins(5, 5, 5, 5)
|
|
178
|
-
layout.setSpacing(5)
|
|
179
|
-
|
|
180
|
-
for par, x in self.N_FEE_FIELDS_LAYOUT.items():
|
|
181
|
-
self._fields[par] = field = QLineEdit()
|
|
182
|
-
field.setMinimumWidth(60)
|
|
183
|
-
field.setAlignment(Qt.AlignRight)
|
|
184
|
-
field.setReadOnly(True)
|
|
185
|
-
layout.addWidget(QLabel(str(par)), x[0], x[1])
|
|
186
|
-
layout.addWidget(field, x[0], x[1] + 1)
|
|
187
|
-
|
|
188
|
-
self.setLayout(layout)
|
|
189
|
-
|
|
190
|
-
@property
|
|
191
|
-
def fields(self):
|
|
192
|
-
return self._fields
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
class _NFEEVoltages(QGroupBox):
|
|
196
|
-
|
|
197
|
-
def __init__(self, *args, **kwargs):
|
|
198
|
-
super().__init__("N-FEE Voltages", *args, **kwargs)
|
|
199
|
-
|
|
200
|
-
self.voltage_fields_layout = {
|
|
201
|
-
"3V3D": ["3V3D_MON", 0, 0],
|
|
202
|
-
"2V5D": ["2V5D_MON", 1, 0],
|
|
203
|
-
"1V5D": ["1V5D_MON", 2, 0],
|
|
204
|
-
"5VREF": ["5VREF_MON", 3, 0],
|
|
205
|
-
|
|
206
|
-
"-5VB": ["5VB_NEG_MON", 1, 2],
|
|
207
|
-
"3V3B": ["3V3B_MON", 0, 2],
|
|
208
|
-
"2V5A": ["2V5A_MON", 3, 2],
|
|
209
|
-
|
|
210
|
-
"VICLK": ["VICLK", 0, 4],
|
|
211
|
-
"VRCLK_MON": ["VRCLK_MON", 1, 4],
|
|
212
|
-
"VCCD": ["VCCD", 2, 4],
|
|
213
|
-
|
|
214
|
-
"VCCD_RAW": ["VCCD_POS_RAW", 2-2, 6],
|
|
215
|
-
"VCLK_RAW": ["VCLK_POS_RAW", 3-2, 6],
|
|
216
|
-
"ZERO_DIFF_AMP": ["ZERO_DIFF_AMP", 4-2, 6],
|
|
217
|
-
"VAN1_RAW": ["VAN1_POS_RAW", 0, 8],
|
|
218
|
-
"VAN2_RAW": ["VAN2_POS_RAW", 1, 8],
|
|
219
|
-
"−VAN3_MON": ["VAN3_NEG_MON", 2, 8],
|
|
220
|
-
"VDIG_RAW": ["VDIG_RAW", 3, 8],
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
if PLATO_CAMERA_IS_EM:
|
|
224
|
-
self.voltage_fields_layout["+5VB"] = ["5VB_POS_MON", 0, 2]
|
|
225
|
-
self.voltage_fields_layout["VICLK_LOW"] = ["VICLK_LOW", 3, 4]
|
|
226
|
-
self.voltage_fields_layout["VRCLK_LOW"] = ["VRCLK_LOW", 4, 4]
|
|
227
|
-
self.voltage_fields_layout["VDIG_RAW_2"] = ["VDIG_RAW_2", 4, 8]
|
|
228
|
-
else:
|
|
229
|
-
self.voltage_fields_layout["1V8D"] = ["1V8D_MON", 4, 2]
|
|
230
|
-
|
|
231
|
-
self._fields = {}
|
|
232
|
-
|
|
233
|
-
layout = QGridLayout()
|
|
234
|
-
layout.setContentsMargins(5, 5, 5, 5)
|
|
235
|
-
layout.setSpacing(5)
|
|
236
|
-
|
|
237
|
-
for par, x in self.voltage_fields_layout.items():
|
|
238
|
-
self._fields[x[0]] = field = QLineEdit()
|
|
239
|
-
field.setMinimumWidth(60)
|
|
240
|
-
field.setAlignment(Qt.AlignRight)
|
|
241
|
-
field.setReadOnly(True)
|
|
242
|
-
label = QLabel(str(par))
|
|
243
|
-
label.setAlignment(Qt.AlignRight)
|
|
244
|
-
layout.addWidget(label, x[1], x[2])
|
|
245
|
-
layout.addWidget(field, x[1], x[2] + 1)
|
|
246
|
-
|
|
247
|
-
self.setLayout(layout)
|
|
248
|
-
|
|
249
|
-
@property
|
|
250
|
-
def fields(self):
|
|
251
|
-
return self._fields
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
class _SpWLEDWidget(QGroupBox):
|
|
255
|
-
|
|
256
|
-
def __init__(self, *args, **kwargs):
|
|
257
|
-
|
|
258
|
-
super().__init__("SpW Status", *args, **kwargs)
|
|
259
|
-
|
|
260
|
-
self._leds = [
|
|
261
|
-
[QLabel("Running"), LED(self), Indic.GREEN,
|
|
262
|
-
"SpaceWire link is running"], # bit 0
|
|
263
|
-
[QLabel("Disconnect"), LED(self), Indic.ORANGE,
|
|
264
|
-
"SpaceWire link is disconnected"], # bit 1
|
|
265
|
-
[QLabel("Parity Error"), LED(self), Indic.RED,
|
|
266
|
-
"A parity error occurred on the SpW link"], # bit 2
|
|
267
|
-
[QLabel("Credit Error"), LED(self), Indic.RED,
|
|
268
|
-
"A credit error occurred on the SpW link"], # bit 3
|
|
269
|
-
[QLabel("Escape Error"), LED(self), Indic.RED,
|
|
270
|
-
"An escape error occurred on the SpW link"], # bit 4
|
|
271
|
-
[QLabel("RMAP Target Indicate"), LED(self), Indic.ORANGE,
|
|
272
|
-
""], # bit 5
|
|
273
|
-
]
|
|
274
|
-
|
|
275
|
-
vbox = QVBoxLayout()
|
|
276
|
-
|
|
277
|
-
for led in self._leds:
|
|
278
|
-
|
|
279
|
-
# Set tooltips for the LEDs
|
|
280
|
-
|
|
281
|
-
led[1].setToolTip(led[3])
|
|
282
|
-
|
|
283
|
-
# Create a hbox where the led and the label is added, then add this hbox to the
|
|
284
|
-
# states vbox.
|
|
285
|
-
|
|
286
|
-
hbox = QHBoxLayout()
|
|
287
|
-
hbox.addWidget(led[1])
|
|
288
|
-
hbox.addWidget(led[0])
|
|
289
|
-
|
|
290
|
-
# Add the corresponding hbox to the states vbox
|
|
291
|
-
|
|
292
|
-
vbox.addLayout(hbox)
|
|
293
|
-
|
|
294
|
-
# Make sure the hboxes stay nicely together when vertically resizing the Frame.
|
|
295
|
-
|
|
296
|
-
vbox.addStretch()
|
|
297
|
-
|
|
298
|
-
self.setLayout(vbox)
|
|
299
|
-
|
|
300
|
-
def update_leds(self, status: int) -> None:
|
|
301
|
-
|
|
302
|
-
for idx, led in enumerate(self._leds):
|
|
303
|
-
if bit_set(status, idx):
|
|
304
|
-
led[1].set_color(led[2])
|
|
305
|
-
else:
|
|
306
|
-
led[1].set_color(Indic.BLACK)
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
class _ErrorFlagsWidget(QGroupBox):
|
|
310
|
-
|
|
311
|
-
def __init__(self, *args, **kwargs):
|
|
312
|
-
|
|
313
|
-
super().__init__("Error Flags", *args, **kwargs)
|
|
314
|
-
|
|
315
|
-
self._leds = [
|
|
316
|
-
[QLabel("Wrong X-Coordinate"), LED(self), Indic.RED,
|
|
317
|
-
"Window Pixels fall outside CDD boundary due to wrong x-coordinate"], # bit 0
|
|
318
|
-
[QLabel("Wrong Y-Coordinate"), LED(self), Indic.RED,
|
|
319
|
-
"Window Pixels fall outside CDD boundary due to wrong y-coordinate"], # bit 1
|
|
320
|
-
[QLabel("E SRAM Full"), LED(self), Indic.RED,
|
|
321
|
-
"E-Side pixel external SRAM BUFFER is Full"], # bit 2
|
|
322
|
-
[QLabel("F SRAM Full"), LED(self), Indic.RED,
|
|
323
|
-
"F-Side pixel external SRAM BUFFER is Full"], # bit 3
|
|
324
|
-
[QLabel("AWLA Error"), LED(self), Indic.RED,
|
|
325
|
-
"Too many overlapping windows, could not complete awla, "
|
|
326
|
-
"some pixels touching the window will be dropped."], # bit 4
|
|
327
|
-
[QLabel("SRAM EDAC Correct"), LED(self), Indic.RED,
|
|
328
|
-
"SRAM EDAC Correctable "], # bit 5
|
|
329
|
-
[QLabel("SRAM EDAC Uncorrect"), LED(self), Indic.RED,
|
|
330
|
-
"SRAM EDAC Uncorrectable "], # bit 6
|
|
331
|
-
[QLabel("Block R EDAC"), LED(self), Indic.RED,
|
|
332
|
-
"BLOCK RAM EDAC Uncorrectable TBC"], # bit 7
|
|
333
|
-
[QLabel("Disconnect Error"), LED(self), Indic.RED, "Link Disconnect Error"], # bit 8
|
|
334
|
-
[QLabel("Escape Error"), LED(self), Indic.RED, "Link Escape Error"], # bit 9
|
|
335
|
-
[QLabel("Credit Error"), LED(self), Indic.RED, "Link Credit Error"], # bit 10
|
|
336
|
-
[QLabel("Parity Error"), LED(self), Indic.RED, "Link Parity Error"], # bit 11
|
|
337
|
-
[QLabel("Lock Error"), LED(self), Indic.RED, "PLL Lock Error"], # bit 12
|
|
338
|
-
]
|
|
339
|
-
|
|
340
|
-
vbox = QVBoxLayout()
|
|
341
|
-
|
|
342
|
-
for led in self._leds:
|
|
343
|
-
|
|
344
|
-
# Set tooltips for the LEDs
|
|
345
|
-
|
|
346
|
-
led[1].setToolTip(led[3])
|
|
347
|
-
|
|
348
|
-
# Create a hbox where the led and the label is added, then add this hbox to the
|
|
349
|
-
# states vbox.
|
|
350
|
-
|
|
351
|
-
hbox = QHBoxLayout()
|
|
352
|
-
hbox.addWidget(led[1])
|
|
353
|
-
hbox.addWidget(led[0])
|
|
354
|
-
|
|
355
|
-
# Add the corresponding hbox to the states vbox
|
|
356
|
-
|
|
357
|
-
vbox.addLayout(hbox)
|
|
358
|
-
|
|
359
|
-
# Make sure the hboxes stay nicely together when vertically resizing the Frame.
|
|
360
|
-
|
|
361
|
-
vbox.addStretch()
|
|
362
|
-
|
|
363
|
-
self.setLayout(vbox)
|
|
364
|
-
|
|
365
|
-
def update_flags(self, error_flags: int) -> None:
|
|
366
|
-
for idx, led in enumerate(self._leds):
|
|
367
|
-
if bit_set(error_flags, idx):
|
|
368
|
-
led[1].set_color(led[2])
|
|
369
|
-
else:
|
|
370
|
-
led[1].set_color(Indic.BLACK)
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
class NFEEHousekeepingWidget(QWidget):
|
|
374
|
-
|
|
375
|
-
def __init__(self, *args, **kwargs):
|
|
376
|
-
super().__init__(*args, **kwargs)
|
|
377
|
-
|
|
378
|
-
self._spw_status = _SpaceWireStatus()
|
|
379
|
-
self._tou_sense = _TOUSensors()
|
|
380
|
-
self._n_fee_voltages = _NFEEVoltages()
|
|
381
|
-
self._n_fee_temperatures = _NFEETemperatures()
|
|
382
|
-
self._ccd_voltages = _CCDVoltages()
|
|
383
|
-
self._spw_leds = _SpWLEDWidget()
|
|
384
|
-
self._error_flags = _ErrorFlagsWidget()
|
|
385
|
-
|
|
386
|
-
hbox_1 = QHBoxLayout()
|
|
387
|
-
hbox_1.addWidget(self._n_fee_temperatures)
|
|
388
|
-
hbox_1.addWidget(self._ccd_voltages)
|
|
389
|
-
|
|
390
|
-
hbox_2 = QHBoxLayout()
|
|
391
|
-
hbox_2.addWidget(self._tou_sense)
|
|
392
|
-
hbox_2.addWidget(self._spw_status)
|
|
393
|
-
|
|
394
|
-
vbox_1 = QVBoxLayout()
|
|
395
|
-
vbox_1.addWidget(self._error_flags)
|
|
396
|
-
vbox_1.addWidget(self._spw_leds)
|
|
397
|
-
vbox_1.addStretch()
|
|
398
|
-
|
|
399
|
-
vbox_2 = QVBoxLayout()
|
|
400
|
-
vbox_2.addLayout(hbox_1)
|
|
401
|
-
vbox_2.addWidget(self._n_fee_voltages)
|
|
402
|
-
vbox_2.addLayout(hbox_2)
|
|
403
|
-
vbox_2.addStretch()
|
|
404
|
-
|
|
405
|
-
hbox = QHBoxLayout()
|
|
406
|
-
hbox.addLayout(vbox_1)
|
|
407
|
-
hbox.addLayout(vbox_2)
|
|
408
|
-
|
|
409
|
-
self.setLayout(hbox)
|
|
410
|
-
|
|
411
|
-
@property
|
|
412
|
-
def spw_status(self):
|
|
413
|
-
return self._spw_status
|
|
414
|
-
|
|
415
|
-
@property
|
|
416
|
-
def tou_sense(self):
|
|
417
|
-
return self._tou_sense
|
|
418
|
-
|
|
419
|
-
@property
|
|
420
|
-
def n_fee_voltages(self):
|
|
421
|
-
return self._n_fee_voltages
|
|
422
|
-
|
|
423
|
-
@property
|
|
424
|
-
def n_fee_temperatures(self):
|
|
425
|
-
return self._n_fee_temperatures
|
|
426
|
-
|
|
427
|
-
@property
|
|
428
|
-
def ccd_voltages(self):
|
|
429
|
-
return self._ccd_voltages
|
|
430
|
-
|
|
431
|
-
@property
|
|
432
|
-
def spw_leds(self):
|
|
433
|
-
return self._spw_leds
|
|
434
|
-
|
|
435
|
-
@property
|
|
436
|
-
def error_flags(self):
|
|
437
|
-
return self._error_flags
|
|
438
|
-
|
|
439
|
-
def update_fields(self, packet: HousekeepingPacket):
|
|
440
|
-
|
|
441
|
-
hk_data = HousekeepingData(packet.data)
|
|
442
|
-
|
|
443
|
-
fields = self.spw_status.fields
|
|
444
|
-
for par in fields:
|
|
445
|
-
fields[par].setText(f"{hk_data[par]:8d}")
|
|
446
|
-
|
|
447
|
-
fields = self.tou_sense.fields
|
|
448
|
-
for par in fields:
|
|
449
|
-
x = f"TOU_SENSE_{par}"
|
|
450
|
-
fields[par].setText(f"{hk_data[x]}")
|
|
451
|
-
|
|
452
|
-
fields = self.n_fee_voltages.fields
|
|
453
|
-
for par in fields:
|
|
454
|
-
fields[par].setText(f"{hk_data[par]:8d}")
|
|
455
|
-
|
|
456
|
-
fields = self.n_fee_temperatures.fields
|
|
457
|
-
for par in fields:
|
|
458
|
-
fields[par].setText(f"{hk_data[par]:8d}")
|
|
459
|
-
|
|
460
|
-
fields = self.ccd_voltages.fields
|
|
461
|
-
for par in fields:
|
|
462
|
-
fields[par].setText(f"{hk_data[par]:8d}")
|
|
463
|
-
|
|
464
|
-
self.spw_leds.update_leds(hk_data["spw_status"])
|
|
465
|
-
|
|
466
|
-
self.error_flags.update_flags(hk_data["error_flags"])
|
|
467
|
-
|
|
468
|
-
self.repaint()
|
egse/dpu_commands.py
DELETED
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
This is a collection of all DPU commands that can be used by the test scripts for the PLATO Camera
|
|
3
|
-
testing. The functions are a one-to-one match to the methods defined in the DPUInterface,
|
|
4
|
-
but they take a parameter dictionary as the argument instead of keyword arguments.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
# TODO:
|
|
8
|
-
# It is currently not clear to me anymore why this intermediate layer was created and why we
|
|
9
|
-
# not just call the DPUInterface methods in the test scripts. Maybe for argument checking,
|
|
10
|
-
# maybe to have just functions instead of methods (procedural call instead of OO calling).
|
|
11
|
-
|
|
12
|
-
import logging
|
|
13
|
-
|
|
14
|
-
from egse.state import GlobalState
|
|
15
|
-
|
|
16
|
-
logger = logging.getLogger(__name__)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
def n_fee_set_full_image_mode(n_fee_parameters: dict):
|
|
20
|
-
"""
|
|
21
|
-
Sets the N-FEE to full_image mode.
|
|
22
|
-
|
|
23
|
-
Input values:
|
|
24
|
-
n_fee_parameters = dict()
|
|
25
|
-
n_fee_parameters["num_images"] = num_images
|
|
26
|
-
n_fee_parameters["row_start"] = row_start
|
|
27
|
-
n_fee_parameters["row_end"] = row_end
|
|
28
|
-
n_fee_parameters["col_end"] = col_end
|
|
29
|
-
n_fee_parameters["rows_final_clearout"] = rows_final_clearout
|
|
30
|
-
n_fee_parameters["ccd_order"] = ccd_order
|
|
31
|
-
n_fee_parameters["ccd_side"] = ccd_side
|
|
32
|
-
|
|
33
|
-
where:
|
|
34
|
-
num_images: Number images to acquire.
|
|
35
|
-
If zero, images will continue to be acquired until the FEE is set to standby mode again.
|
|
36
|
-
row_start: First row to read out.
|
|
37
|
-
row_end: First row not to read out.
|
|
38
|
-
col_end: First column not to read out.
|
|
39
|
-
rows_final_clearout: number of rows for the clearout after the readout
|
|
40
|
-
ccd_order: list of four integers containing the CCD numbers 1, 2, 3, 4
|
|
41
|
-
ccd_side: in ['E','F'] with E = left, F = right
|
|
42
|
-
|
|
43
|
-
Args:
|
|
44
|
-
n_fee_parameters (dict): dictionary with N-FEE settings for this command.
|
|
45
|
-
|
|
46
|
-
Returns:
|
|
47
|
-
The status.
|
|
48
|
-
"""
|
|
49
|
-
dpu = GlobalState.setup.camera.dpu.device
|
|
50
|
-
status = dpu.n_fee_set_full_image_mode(n_fee_parameters)
|
|
51
|
-
return status
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
def n_fee_set_reverse_clocking(n_fee_parameters):
|
|
55
|
-
"""
|
|
56
|
-
Sets the N-FEE to reverse clocking mode.
|
|
57
|
-
|
|
58
|
-
Args:
|
|
59
|
-
n_fee_parameters (dict): dictionary with N-FEE settings for this command.
|
|
60
|
-
|
|
61
|
-
"""
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
def n_fee_get_mode() -> int:
|
|
65
|
-
"""
|
|
66
|
-
Returns the mode in which the N-FEE currently is.
|
|
67
|
-
|
|
68
|
-
The mode value that is returned can be checked against the n_fee_mode enumeration.
|
|
69
|
-
|
|
70
|
-
>>> from egse.fee import n_fee_mode
|
|
71
|
-
>>> if dpu_commands.get_n_fee_mode() == n_fee_mode.STAND_BY_MODE:
|
|
72
|
-
... pass
|
|
73
|
-
|
|
74
|
-
Returns:
|
|
75
|
-
The N-FEE mode as an integer.
|
|
76
|
-
"""
|
|
77
|
-
|
|
78
|
-
dpu = GlobalState.setup.camera.dpu.device
|
|
79
|
-
mode = dpu.get_n_fee_mode()
|
|
80
|
-
|
|
81
|
-
return mode
|
egse/dsi/__init__.py
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# The purpose of this code is to lazy load the ESL shared library and the functions loaded from that library.
|
|
2
|
-
# The reason for doing this is (1) remove unnecessary imports when not needed by the app, and (2) allow code
|
|
3
|
-
# to run on a different platform that cannot load the shared library, but still needs some functionality from
|
|
4
|
-
# the `egse.dsi` module.
|
|
5
|
-
|
|
6
|
-
import logging
|
|
7
|
-
|
|
8
|
-
__all__ = [
|
|
9
|
-
"_libesl",
|
|
10
|
-
]
|
|
11
|
-
|
|
12
|
-
import importlib
|
|
13
|
-
|
|
14
|
-
_LOGGER = logging.getLogger(__name__)
|
|
15
|
-
_LAZY_LOADING_CACHE: dict = {}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def __getattr__(name):
|
|
19
|
-
|
|
20
|
-
try:
|
|
21
|
-
return _LAZY_LOADING_CACHE[name]
|
|
22
|
-
except KeyError:
|
|
23
|
-
pass
|
|
24
|
-
|
|
25
|
-
if name not in __all__:
|
|
26
|
-
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
27
|
-
|
|
28
|
-
module = importlib.import_module("." + name, __name__)
|
|
29
|
-
|
|
30
|
-
_LOGGER.info(f"Module {module.__name__} imported.")
|
|
31
|
-
_LAZY_LOADING_CACHE[name] = module
|
|
32
|
-
|
|
33
|
-
return module
|