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/aeu/aeu_cs.py
DELETED
|
@@ -1,627 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
For each hardware component of the AEU (i.e. cRIO, PSU[1:6], and AEG[1:2]), a Control Server that connects to that
|
|
3
|
-
hardware component must be started. With this module, you can start and shut down these Control Servers all in one go,
|
|
4
|
-
or one-by-one. In absence of the real hardware, the Control Servers can be started in simulator mode.
|
|
5
|
-
|
|
6
|
-
To start all AEU control servers from the terminal:
|
|
7
|
-
|
|
8
|
-
```bash
|
|
9
|
-
$ aeu_cs start [--sim]
|
|
10
|
-
```
|
|
11
|
-
|
|
12
|
-
The `--sim` option must be used to start the Control Servers in simulator mode (e.g. in absence of the real hardware).
|
|
13
|
-
|
|
14
|
-
To shut down all Control Servers from the terminal:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
$ aeu_cs stop
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
Individual AEU Control Servers can be started from the terminal as follows:
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
$ aeu_cs start-crio-cs [--sim]
|
|
24
|
-
|
|
25
|
-
$ aeu_cs start-psu-cs 1 [--sim]
|
|
26
|
-
$ aeu_cs start-psu-cs 2 [--sim]
|
|
27
|
-
$ aeu_cs start-psu-cs 3 [--sim]
|
|
28
|
-
$ aeu_cs start-psu-cs 4 [--sim]
|
|
29
|
-
$ aeu_cs start-psu-cs 5 [--sim]
|
|
30
|
-
$ aeu_cs start-psu-cs 6 [--sim]
|
|
31
|
-
|
|
32
|
-
$ aeu_cs start-awg-cs 1 [--sim]
|
|
33
|
-
$ aeu_cs start-awg-cs 2 [--sim]
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Also here the `--sim` option must be used to start the control servers in simulator mode (e.g. in absence of the real
|
|
37
|
-
hardware).
|
|
38
|
-
|
|
39
|
-
To shut down individual Control Servers from the terminal:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
$ aeu_cs stop-crio-cs
|
|
43
|
-
|
|
44
|
-
$ aeu_cs stop-psu-cs 1
|
|
45
|
-
$ aeu_cs stop-psu-cs 2
|
|
46
|
-
$ aeu_cs stop-psu-cs 3
|
|
47
|
-
$ aeu_cs stop-psu-cs 4
|
|
48
|
-
$ aeu_cs stop-psu-cs 5
|
|
49
|
-
$ aeu_cs stop-psu-cs 6
|
|
50
|
-
|
|
51
|
-
$ aeu_cs stop-awg-cs 1
|
|
52
|
-
$ aeu_cs stop-awg-cs 2
|
|
53
|
-
```
|
|
54
|
-
"""
|
|
55
|
-
|
|
56
|
-
import logging
|
|
57
|
-
import multiprocessing
|
|
58
|
-
|
|
59
|
-
import sys
|
|
60
|
-
|
|
61
|
-
from egse.setup import load_setup
|
|
62
|
-
from egse.system import SignalCatcher
|
|
63
|
-
|
|
64
|
-
multiprocessing.current_process().name = "aeu_cs"
|
|
65
|
-
|
|
66
|
-
import click
|
|
67
|
-
import rich
|
|
68
|
-
import zmq
|
|
69
|
-
from invoke import run
|
|
70
|
-
from prometheus_client import start_http_server
|
|
71
|
-
|
|
72
|
-
from egse.aeu.aeu import CRIOProxy, is_aeu_cs_active, PSUProxy, AWGProxy
|
|
73
|
-
from egse.aeu.aeu_protocol import CRIOProtocol, PSUProtocol, AWGProtocol
|
|
74
|
-
from egse.control import ControlServer
|
|
75
|
-
from egse.settings import Settings
|
|
76
|
-
|
|
77
|
-
logger = logging.getLogger(__name__)
|
|
78
|
-
|
|
79
|
-
CTRL_SETTINGS = Settings.load("AEU Control Server")
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
class AEUControlServer(ControlServer):
|
|
83
|
-
""" AEUControlServer - Command and monitor the AEU EGSE hardware.
|
|
84
|
-
|
|
85
|
-
This class works as a command and monitoring server to control an AEU EGSE device. This Control Server shall be used
|
|
86
|
-
as the single-point access for controlling the hardware device. Monitoring access should be done preferably through
|
|
87
|
-
this Control Server also.
|
|
88
|
-
|
|
89
|
-
The sever binds to the following ZeroMQ sockets:
|
|
90
|
-
|
|
91
|
-
- REQ-REP socket that can be used as a command server. Any client can connect and send a command to the AEU EGSE
|
|
92
|
-
device.
|
|
93
|
-
- PUB-SUP socket that serves as a monitoring server. It will send out AEU EGSE device status information to all
|
|
94
|
-
the connected clients every TBD seconds.
|
|
95
|
-
"""
|
|
96
|
-
|
|
97
|
-
def __init__(self, name: str):
|
|
98
|
-
""" Initialisation of an AEU Control Server with the given name.
|
|
99
|
-
|
|
100
|
-
Args:
|
|
101
|
-
- name: Name of the AEU hardware component.
|
|
102
|
-
"""
|
|
103
|
-
|
|
104
|
-
self.name = name
|
|
105
|
-
|
|
106
|
-
super(AEUControlServer, self).__init__()
|
|
107
|
-
|
|
108
|
-
self.device_protocol = None
|
|
109
|
-
self.set_protocol()
|
|
110
|
-
|
|
111
|
-
self.logger.info(f"Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}")
|
|
112
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
113
|
-
|
|
114
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
115
|
-
|
|
116
|
-
self.set_delay(CTRL_SETTINGS[name]["DELAY"])
|
|
117
|
-
self.set_hk_delay(CTRL_SETTINGS[name]["HK_DELAY"])
|
|
118
|
-
|
|
119
|
-
def get_communication_protocol(self):
|
|
120
|
-
""" Return the communication protocol.
|
|
121
|
-
|
|
122
|
-
Return the communication protocol as mentioned in the settings file. This is the same for AEU Control Servers.
|
|
123
|
-
|
|
124
|
-
Returns: Communication protocol.
|
|
125
|
-
"""
|
|
126
|
-
|
|
127
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
128
|
-
|
|
129
|
-
def get_commanding_port(self):
|
|
130
|
-
""" Return the commanding port.
|
|
131
|
-
|
|
132
|
-
Return the commanding port as mentioned in the settings file. This is different for all AEU Control Servers.
|
|
133
|
-
|
|
134
|
-
Returns: Commanding port.
|
|
135
|
-
"""
|
|
136
|
-
|
|
137
|
-
return CTRL_SETTINGS[self.name]["COMMANDING_PORT"]
|
|
138
|
-
|
|
139
|
-
def get_service_port(self):
|
|
140
|
-
"""Return the service port.
|
|
141
|
-
|
|
142
|
-
Return the service port as mentioned in the settings file. This is different for all AEU Control Servers.
|
|
143
|
-
|
|
144
|
-
Returns: Service port.
|
|
145
|
-
"""
|
|
146
|
-
|
|
147
|
-
return CTRL_SETTINGS[self.name]["SERVICE_PORT"]
|
|
148
|
-
|
|
149
|
-
def get_monitoring_port(self):
|
|
150
|
-
""" Return the monitoring port.
|
|
151
|
-
|
|
152
|
-
Return the monitoring port as mentioned in the settings file. This is different for all AEU Control Servers.
|
|
153
|
-
|
|
154
|
-
Returns: Monitoring port.
|
|
155
|
-
"""
|
|
156
|
-
|
|
157
|
-
return CTRL_SETTINGS[self.name]["MONITORING_PORT"]
|
|
158
|
-
|
|
159
|
-
def get_metrics_port(self):
|
|
160
|
-
""" Return the metrics port.
|
|
161
|
-
|
|
162
|
-
Return the metrics port as mentioned in the settings file. This is different for all AEU Control Servers.
|
|
163
|
-
|
|
164
|
-
Returns: Metrics port.
|
|
165
|
-
"""
|
|
166
|
-
|
|
167
|
-
return CTRL_SETTINGS[self.name]["METRICS_PORT"]
|
|
168
|
-
|
|
169
|
-
def get_storage_mnemonic(self):
|
|
170
|
-
""" Return the storage mnemonic.
|
|
171
|
-
|
|
172
|
-
Return the storage mnemonic as mentioned in the settings file. If this is not mentioned there, the name of the
|
|
173
|
-
AEU device is used.
|
|
174
|
-
|
|
175
|
-
Returns: Storage mnemonic.
|
|
176
|
-
"""
|
|
177
|
-
|
|
178
|
-
try:
|
|
179
|
-
|
|
180
|
-
return CTRL_SETTINGS[self.name]["STORAGE_MNEMONIC"]
|
|
181
|
-
|
|
182
|
-
except AttributeError:
|
|
183
|
-
|
|
184
|
-
return self.name
|
|
185
|
-
|
|
186
|
-
def before_serve(self):
|
|
187
|
-
""" Start the HTTP server for monitoring with Prometheus and Grafana."""
|
|
188
|
-
|
|
189
|
-
start_http_server(CTRL_SETTINGS[self.name]["METRICS_PORT"])
|
|
190
|
-
|
|
191
|
-
def set_protocol(self):
|
|
192
|
-
""" Set the protocol for the AEU Control Server.
|
|
193
|
-
|
|
194
|
-
This should be implemented in the component-specific classes.
|
|
195
|
-
"""
|
|
196
|
-
|
|
197
|
-
pass
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
class CRIOControlServer(AEUControlServer):
|
|
201
|
-
""" AEU Control Server for the cRIO."""
|
|
202
|
-
|
|
203
|
-
def __init__(self):
|
|
204
|
-
""" Initialisation of an AEU Control Server for the cRIO."""
|
|
205
|
-
|
|
206
|
-
super().__init__("CRIO")
|
|
207
|
-
|
|
208
|
-
def set_protocol(self):
|
|
209
|
-
""" Set the protocol for the cRIO Control Server."""
|
|
210
|
-
|
|
211
|
-
self.device_protocol = CRIOProtocol(self)
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
class PSUControlServer(AEUControlServer):
|
|
215
|
-
""" AEU Control Server for the PSU."""
|
|
216
|
-
|
|
217
|
-
def __init__(self, psu_index: int):
|
|
218
|
-
""" Initialisation of an AEU Control Server for the PSU with the given index.
|
|
219
|
-
|
|
220
|
-
Args:
|
|
221
|
-
- psu_index: Index of the PSU (should be 1..6).
|
|
222
|
-
"""
|
|
223
|
-
|
|
224
|
-
self.psu_index = psu_index
|
|
225
|
-
|
|
226
|
-
super().__init__("PSU" + str(psu_index))
|
|
227
|
-
|
|
228
|
-
def set_protocol(self):
|
|
229
|
-
""" Set the protocol for the PSU Control Server."""
|
|
230
|
-
|
|
231
|
-
self.device_protocol = PSUProtocol(self, self.psu_index)
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
class AWGControlServer(AEUControlServer):
|
|
235
|
-
""" AEU Control Server for the AWG."""
|
|
236
|
-
|
|
237
|
-
def __init__(self, awg_index: int):
|
|
238
|
-
""" Initialisation of an AEU Control Server for the AWG with the given index.
|
|
239
|
-
|
|
240
|
-
Args:
|
|
241
|
-
- awg_index: Index of the AWG (should be 1 or 2).
|
|
242
|
-
"""
|
|
243
|
-
|
|
244
|
-
self.awg_index = awg_index
|
|
245
|
-
|
|
246
|
-
super().__init__("AWG" + str(self.awg_index))
|
|
247
|
-
|
|
248
|
-
self.killer = SignalCatcher()
|
|
249
|
-
|
|
250
|
-
def set_protocol(self):
|
|
251
|
-
""" Set the protocol for the AWG Control Server."""
|
|
252
|
-
|
|
253
|
-
self.device_protocol = AWGProtocol(self, self.awg_index)
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
@click.group()
|
|
257
|
-
def cli():
|
|
258
|
-
|
|
259
|
-
pass
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
@cli.command()
|
|
263
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the AEU cRIO EGSE Simulator as the backend.")
|
|
264
|
-
def start_crio_cs(simulator):
|
|
265
|
-
""" Start the AEU cRIO Control Server.
|
|
266
|
-
|
|
267
|
-
To start the AEU cRIO Control Server from the command line (after running setuptools):
|
|
268
|
-
|
|
269
|
-
```bash
|
|
270
|
-
$ aeu_cs start-crio-cs [--sim]
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
Args:
|
|
274
|
-
- simulator: Indicates whether or not to start the Control Server in simulator mode.
|
|
275
|
-
|
|
276
|
-
Raises:
|
|
277
|
-
- KeyboardInterrupt: upon keyboard interrupt.
|
|
278
|
-
- SystemExit: upon system exit.
|
|
279
|
-
- Exception: if the control server cannot be started.
|
|
280
|
-
"""
|
|
281
|
-
|
|
282
|
-
if simulator:
|
|
283
|
-
|
|
284
|
-
Settings.set_simulation_mode(True)
|
|
285
|
-
|
|
286
|
-
try:
|
|
287
|
-
|
|
288
|
-
multiprocessing.current_process().name = "crio_cs"
|
|
289
|
-
|
|
290
|
-
crio = CRIOControlServer()
|
|
291
|
-
crio.serve()
|
|
292
|
-
|
|
293
|
-
except KeyboardInterrupt:
|
|
294
|
-
|
|
295
|
-
print("Shutdown requested...exiting")
|
|
296
|
-
|
|
297
|
-
except SystemExit as exit_code:
|
|
298
|
-
|
|
299
|
-
print(f"System Exit with code {exit_code}.")
|
|
300
|
-
sys.exit(exit_code)
|
|
301
|
-
|
|
302
|
-
except Exception as exc:
|
|
303
|
-
|
|
304
|
-
logger.exception(f"An error occurred for the cRIO: {exc}")
|
|
305
|
-
|
|
306
|
-
return 0
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
@cli.command()
|
|
310
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start an AEU PSU EGSE Simulator as the backend.")
|
|
311
|
-
@click.argument('index', type=click.IntRange(1, 6))
|
|
312
|
-
def start_psu_cs(simulator, index):
|
|
313
|
-
""" Start the AEU PSU Control Server with the given index.
|
|
314
|
-
|
|
315
|
-
To start the PSU Control Server from the command line (after running setuptools):
|
|
316
|
-
|
|
317
|
-
```bash
|
|
318
|
-
aeu_cs start-psu-cs INDEX [--sim]
|
|
319
|
-
```
|
|
320
|
-
|
|
321
|
-
Args:
|
|
322
|
-
- simulator: Indicates whether or not to start the Control Server in simulator mode.
|
|
323
|
-
- index: Index of the PSU (should be 1..6).
|
|
324
|
-
|
|
325
|
-
Raises:
|
|
326
|
-
- KeyboardInterrupt: upon keyboard interrupt.
|
|
327
|
-
- SystemExit: upon system exit.
|
|
328
|
-
- Exception: if the control server cannot be started.
|
|
329
|
-
"""
|
|
330
|
-
|
|
331
|
-
if simulator:
|
|
332
|
-
|
|
333
|
-
Settings.set_simulation_mode(True)
|
|
334
|
-
|
|
335
|
-
try:
|
|
336
|
-
|
|
337
|
-
logger.info(f"Starting PSU{index} Control Server")
|
|
338
|
-
|
|
339
|
-
multiprocessing.current_process().name = f"psu_cs_{index}"
|
|
340
|
-
|
|
341
|
-
psu = PSUControlServer(index)
|
|
342
|
-
psu.serve()
|
|
343
|
-
|
|
344
|
-
except KeyboardInterrupt:
|
|
345
|
-
|
|
346
|
-
print("Shutdown requested...exiting")
|
|
347
|
-
|
|
348
|
-
except SystemExit as exit_code:
|
|
349
|
-
|
|
350
|
-
print(f"System Exit with code {exit_code}.")
|
|
351
|
-
sys.exit(exit_code)
|
|
352
|
-
|
|
353
|
-
except Exception as exc:
|
|
354
|
-
|
|
355
|
-
logger.exception(f"An error occurred for PSU{index}: {exc}")
|
|
356
|
-
|
|
357
|
-
return 0
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
@cli.command()
|
|
361
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start an AEU AWG EGSE Simulator as the backend.")
|
|
362
|
-
@click.argument('index', type=click.IntRange(1, 2))
|
|
363
|
-
def start_awg_cs(simulator, index):
|
|
364
|
-
""" Start the AEU AWG Control Server with the given index.
|
|
365
|
-
|
|
366
|
-
To start the AWG Control Server from the command line (after running setuptools):
|
|
367
|
-
|
|
368
|
-
```bash
|
|
369
|
-
aeu_cs start-awg-cs INDEX [--sim]
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
Args:
|
|
373
|
-
- simulator: Indicates whether or not to start the Control Server in simulator mode.
|
|
374
|
-
- index: Index of the AWG (should be 1 or 2).
|
|
375
|
-
|
|
376
|
-
Raises:
|
|
377
|
-
- KeyboardInterrupt: upon keyboard interrupt.
|
|
378
|
-
- SystemExit: upon system exit.
|
|
379
|
-
- Exception: if the control server cannot be started.
|
|
380
|
-
"""
|
|
381
|
-
|
|
382
|
-
if index == 2:
|
|
383
|
-
|
|
384
|
-
try:
|
|
385
|
-
setup = load_setup()
|
|
386
|
-
setup.gse.aeu.awg2.calibration
|
|
387
|
-
except AttributeError:
|
|
388
|
-
logger.exception("Starting AWG2 Control Server failed because no setup was loaded " +
|
|
389
|
-
"or the loaded setup does not contain AWG2 calibration data")
|
|
390
|
-
|
|
391
|
-
if simulator:
|
|
392
|
-
Settings.set_simulation_mode(True)
|
|
393
|
-
|
|
394
|
-
try:
|
|
395
|
-
|
|
396
|
-
logger.info(f"Starting AWG{index} Control Server")
|
|
397
|
-
|
|
398
|
-
multiprocessing.current_process().name = f"awg_cs_{index}"
|
|
399
|
-
|
|
400
|
-
awg = AWGControlServer(index)
|
|
401
|
-
awg.serve()
|
|
402
|
-
|
|
403
|
-
except KeyboardInterrupt:
|
|
404
|
-
|
|
405
|
-
print("Shutdown requested...exiting")
|
|
406
|
-
|
|
407
|
-
except SystemExit as exit_code:
|
|
408
|
-
|
|
409
|
-
print(f"System Exit with code {exit_code}.")
|
|
410
|
-
sys.exit(exit_code)
|
|
411
|
-
|
|
412
|
-
except BrokenPipeError as bpe:
|
|
413
|
-
|
|
414
|
-
logger.warning(f"BrokenPipeError occurred for AWG{index}: {bpe}")
|
|
415
|
-
logger.info(f"Not reconnecting to AWG{index}")
|
|
416
|
-
|
|
417
|
-
# device = awg.device_protocol.awg
|
|
418
|
-
# device.reconnect()
|
|
419
|
-
|
|
420
|
-
except Exception as exc:
|
|
421
|
-
|
|
422
|
-
logger.exception(f"An error occurred for AWG{index}: {exc}")
|
|
423
|
-
|
|
424
|
-
return 0
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
@cli.command()
|
|
428
|
-
def stop_crio_cs():
|
|
429
|
-
""" Shut down the AEU cRIO Control Server.
|
|
430
|
-
|
|
431
|
-
To shut down the AEU cRIO Control Server from the command line (after running setuptools):
|
|
432
|
-
|
|
433
|
-
```bash
|
|
434
|
-
aeu_cs stop-crio-cs
|
|
435
|
-
```
|
|
436
|
-
"""
|
|
437
|
-
|
|
438
|
-
if is_aeu_cs_active("CRIO"):
|
|
439
|
-
|
|
440
|
-
with CRIOProxy() as proxy:
|
|
441
|
-
|
|
442
|
-
sp = proxy.get_service_proxy()
|
|
443
|
-
sp.quit_server()
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
@cli.command()
|
|
447
|
-
@click.argument('index', type=click.IntRange(1, 6))
|
|
448
|
-
def stop_psu_cs(index: int):
|
|
449
|
-
""" Shut down the AEU PSU Control Server with the given index.
|
|
450
|
-
|
|
451
|
-
To shut down the AEU PSU Control Server from the command line (after running setuptools):
|
|
452
|
-
|
|
453
|
-
```bash
|
|
454
|
-
aeu_cs stop-psu-cs INDEX
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
Args:
|
|
458
|
-
- index: Index of the PSU (should be 1..6).
|
|
459
|
-
"""
|
|
460
|
-
|
|
461
|
-
if is_aeu_cs_active("PSU" + str(index)):
|
|
462
|
-
|
|
463
|
-
with PSUProxy(index) as proxy:
|
|
464
|
-
|
|
465
|
-
sp = proxy.get_service_proxy()
|
|
466
|
-
sp.quit_server()
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
@cli.command()
|
|
470
|
-
@click.argument('index', type=click.IntRange(1, 2))
|
|
471
|
-
def stop_awg_cs(index: int):
|
|
472
|
-
""" Shut down the AEU AWG control server with the given index.
|
|
473
|
-
|
|
474
|
-
To shut down the AEU AWG Control Server from the command line (after running setuptools):
|
|
475
|
-
|
|
476
|
-
```bash
|
|
477
|
-
aeu_cs stop-awg-cs INDEX
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
Args:
|
|
481
|
-
- index: Index of the AWG (should be 1 or).
|
|
482
|
-
"""
|
|
483
|
-
|
|
484
|
-
if is_aeu_cs_active("AWG" + str(index)):
|
|
485
|
-
|
|
486
|
-
with AWGProxy(index) as proxy:
|
|
487
|
-
|
|
488
|
-
logger.info(f"Shutting down AWG{index} Control Server")
|
|
489
|
-
|
|
490
|
-
sp = proxy.get_service_proxy()
|
|
491
|
-
sp.quit_server()
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
@cli.command()
|
|
495
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the AEU EGSE Simulators as the backend.")
|
|
496
|
-
def start(simulator):
|
|
497
|
-
""" Start the AEU Control Servers.
|
|
498
|
-
|
|
499
|
-
To start these from the command line (after running setuptools):
|
|
500
|
-
|
|
501
|
-
```bash
|
|
502
|
-
aeu_cs start [--sim]
|
|
503
|
-
```
|
|
504
|
-
|
|
505
|
-
Args:
|
|
506
|
-
- simulator: Indicates whether or not to start the Control Servers in simulator mode.
|
|
507
|
-
"""
|
|
508
|
-
|
|
509
|
-
suffix = ""
|
|
510
|
-
|
|
511
|
-
if simulator:
|
|
512
|
-
|
|
513
|
-
suffix = "--sim"
|
|
514
|
-
|
|
515
|
-
logger.info(f"Starting cRIO")
|
|
516
|
-
|
|
517
|
-
run(f"aeu_cs start-crio-cs {suffix}", disown=True)
|
|
518
|
-
|
|
519
|
-
for index in range(1, 7):
|
|
520
|
-
|
|
521
|
-
logger.info(f"Starting PSU{index}")
|
|
522
|
-
run(f"aeu_cs start-psu-cs {index} {suffix}", disown=True)
|
|
523
|
-
|
|
524
|
-
for index in range(1, 3):
|
|
525
|
-
|
|
526
|
-
logger.info(f"Starting AWG{index}")
|
|
527
|
-
run(f"aeu_cs start-awg-cs {index} {suffix}", disown=True)
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
@cli.command()
|
|
531
|
-
def stop():
|
|
532
|
-
""" Shut down the AEU Control Servers.
|
|
533
|
-
|
|
534
|
-
To shut these down from the command line (after running setuptools):
|
|
535
|
-
|
|
536
|
-
```bash
|
|
537
|
-
aeu_cs stop [--sim]
|
|
538
|
-
```
|
|
539
|
-
|
|
540
|
-
Args:
|
|
541
|
-
- simulator: Indicates whether or not to start the Control Servers in simulator mode.
|
|
542
|
-
"""
|
|
543
|
-
|
|
544
|
-
logger.info(f"Shutting down cRIO")
|
|
545
|
-
|
|
546
|
-
run("aeu_cs stop-crio-cs")
|
|
547
|
-
|
|
548
|
-
for index in range(1, 7):
|
|
549
|
-
|
|
550
|
-
logger.info(f"Shutting down PSU{index}")
|
|
551
|
-
run(f"aeu_cs stop-psu-cs {index}", disown=True)
|
|
552
|
-
|
|
553
|
-
for index in range(1, 3):
|
|
554
|
-
|
|
555
|
-
logger.info(f"Shutting down AWG{index}")
|
|
556
|
-
run(f"aeu_cs stop-awg-cs {index}", disown=True)
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
@cli.command()
|
|
560
|
-
def status():
|
|
561
|
-
"""Print the status of the AEU control servers."""
|
|
562
|
-
|
|
563
|
-
# AEU cRIO
|
|
564
|
-
|
|
565
|
-
rich.print("AEU cRIO:")
|
|
566
|
-
|
|
567
|
-
if is_aeu_cs_active("CRIO"):
|
|
568
|
-
|
|
569
|
-
rich.print(f" Status: [green]active")
|
|
570
|
-
|
|
571
|
-
with CRIOProxy() as crio:
|
|
572
|
-
|
|
573
|
-
rich.print(f" Hostname: {crio.get_ip_address()}")
|
|
574
|
-
rich.print(f" Monitoring port: {crio.get_monitoring_port()}")
|
|
575
|
-
rich.print(f" Commanding port: {crio.get_commanding_port()}")
|
|
576
|
-
rich.print(f" Service port: {crio.get_service_port()}")
|
|
577
|
-
|
|
578
|
-
else:
|
|
579
|
-
|
|
580
|
-
rich.print(f" Status: [red]not active")
|
|
581
|
-
|
|
582
|
-
# PSU
|
|
583
|
-
|
|
584
|
-
for psu_index in range(1, 7):
|
|
585
|
-
|
|
586
|
-
rich.print(f"AEU PSU{psu_index}:")
|
|
587
|
-
|
|
588
|
-
if is_aeu_cs_active(f"PSU{psu_index}"):
|
|
589
|
-
|
|
590
|
-
rich.print(f" Status: [green]active")
|
|
591
|
-
|
|
592
|
-
with PSUProxy(psu_index) as psu:
|
|
593
|
-
|
|
594
|
-
rich.print(f" Hostname: {psu.get_ip_address()}")
|
|
595
|
-
rich.print(f" Monitoring port: {psu.get_monitoring_port()}")
|
|
596
|
-
rich.print(f" Commanding port: {psu.get_commanding_port()}")
|
|
597
|
-
rich.print(f" Service port: {psu.get_service_port()}")
|
|
598
|
-
|
|
599
|
-
else:
|
|
600
|
-
|
|
601
|
-
rich.print(f" Status: [red]not active")
|
|
602
|
-
|
|
603
|
-
# AWG
|
|
604
|
-
|
|
605
|
-
for awg_index in [1, 2]:
|
|
606
|
-
|
|
607
|
-
rich.print(f"AEU AWG{awg_index}:")
|
|
608
|
-
|
|
609
|
-
if is_aeu_cs_active(f"AWG{awg_index}"):
|
|
610
|
-
|
|
611
|
-
rich.print(f" Status: [green]active")
|
|
612
|
-
|
|
613
|
-
with AWGProxy(awg_index) as awg:
|
|
614
|
-
|
|
615
|
-
rich.print(f" Hostname: {awg.get_ip_address()}")
|
|
616
|
-
rich.print(f" Monitoring port: {awg.get_monitoring_port()}")
|
|
617
|
-
rich.print(f" Commanding port: {awg.get_commanding_port()}")
|
|
618
|
-
rich.print(f" Service port: {awg.get_service_port()}")
|
|
619
|
-
|
|
620
|
-
else:
|
|
621
|
-
|
|
622
|
-
rich.print(f" Status: [red]not active")
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
if __name__ == "__main__":
|
|
626
|
-
|
|
627
|
-
sys.exit(cli())
|