cgse 2023.38.0__py3-none-any.whl → 2024.1.4__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-2024.1.4.dist-info/METADATA +38 -0
- cgse-2024.1.4.dist-info/RECORD +5 -0
- {cgse-2023.38.0.dist-info → cgse-2024.1.4.dist-info}/WHEEL +1 -2
- cgse-2023.38.0.dist-info/COPYING +0 -674
- cgse-2023.38.0.dist-info/COPYING.LESSER +0 -165
- cgse-2023.38.0.dist-info/METADATA +0 -144
- cgse-2023.38.0.dist-info/RECORD +0 -649
- cgse-2023.38.0.dist-info/entry_points.txt +0 -75
- cgse-2023.38.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5235
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -626
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -912
- 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 -234
- egse/alert/alertman_ui.py +0 -603
- 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 -130
- egse/alert/gsm/beaglebone_protocol.py +0 -48
- 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 -129
- 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 -1015
- egse/confman/confman.yaml +0 -67
- egse/confman/confman_cs.py +0 -239
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -442
- egse/coordinates/__init__.py +0 -531
- egse/coordinates/avoidance.py +0 -103
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -120
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -195
- 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 -1247
- 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 -415
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2681
- egse/dpu/ccd_ui.py +0 -508
- egse/dpu/dpu.py +0 -786
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -668
- egse/dpu/fitsgen.py +0 -2077
- egse/dpu/fitsgen_test.py +0 -752
- 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/constants.py +0 -220
- egse/dsi/esl.py +0 -870
- egse/dsi/rmap.py +0 -1042
- egse/dsi/rmapci.py +0 -37
- egse/dsi/spw.py +0 -154
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -258
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -28
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -51
- egse/fdir/fdir_manager_controller.py +0 -228
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -25
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -37
- egse/fdir/fdir_remote_controller.py +0 -50
- egse/fdir/fdir_remote_cs.py +0 -97
- egse/fdir/fdir_remote_interface.py +0 -14
- egse/fdir/fdir_remote_popup.py +0 -31
- egse/fee/__init__.py +0 -114
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/fee.py +0 -631
- egse/fee/feesim.py +0 -750
- egse/fee/n_fee_hk.py +0 -761
- egse/fee/nfee.py +0 -187
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -24
- egse/filterwheel/eksma/fw8smc4.py +0 -661
- 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 -81
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -111
- 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 -1068
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -712
- egse/fov/fov_ui.py +0 -861
- 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 -135
- 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 -1281
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -588
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- 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 -138
- 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 -196
- egse/hexapod/symetrie/puna_protocol.py +0 -131
- egse/hexapod/symetrie/puna_ui.py +0 -434
- 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 -415
- egse/hexapod/symetrie/zonda_protocol.py +0 -119
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -765
- 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 -69
- 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/macOS/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/macOS/EtherSpaceLink_v34_86.dylib +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 -73
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -98
- 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 -163
- 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 -811
- 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 -603
- egse/proxy.py +0 -522
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -675
- egse/resource.py +0 -333
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -212
- egse/services.yaml +0 -51
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1180
- 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 -69
- 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 -1479
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -247
- 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 -193
- egse/stages/arun/smd3.py +0 -111
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -472
- 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 -904
- 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 -111
- 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 -1004
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -72
- egse/storage/storage_cs.py +0 -214
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -412
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1408
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -874
- 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 -177
- 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 -116
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -99
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -117
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -101
- egse/tempcontrol/beaglebone/beaglebone.py +0 -342
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -135
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -681
- egse/tempcontrol/digalox/digalox.py +0 -107
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -112
- egse/tempcontrol/digalox/digalox_protocol.py +0 -55
- 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 -78
- 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 -73
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -389
- 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 -727
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -875
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -118
- egse/tempcontrol/srs/ptc10_protocol.py +0 -42
- 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 -164
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -193
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -92
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -128
- 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 -102
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -83
- 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 -316
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -704
- 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 -39
- egse/vacuum/pfeiffer/tc400.py +0 -113
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -140
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -24
- egse/vacuum/pfeiffer/tpg261.py +0 -81
- 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 -60
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -24
- 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 -44
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/create_hdf5_report.py +0 -295
- scripts/csl_model.py +0 -436
- scripts/csl_restore_setup.py +0 -230
- scripts/export-grafana-dashboards.py +0 -50
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -59
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -11
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -64
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -61
- 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/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/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/tm_gen/tm_gen_agilent.py +0 -38
- 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
scripts/print_hdf5_hk_data.py
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
import click
|
|
5
|
-
import rich
|
|
6
|
-
from rich.console import Console
|
|
7
|
-
from rich.table import Table
|
|
8
|
-
|
|
9
|
-
from egse import h5
|
|
10
|
-
from egse.fee.nfee import HousekeepingData
|
|
11
|
-
|
|
12
|
-
@click.command()
|
|
13
|
-
@click.argument('filename')
|
|
14
|
-
def print_hk_data(filename: str | Path):
|
|
15
|
-
"""Prints the updated HK data that is saved in the HDF5 file."""
|
|
16
|
-
|
|
17
|
-
filename = Path(filename)
|
|
18
|
-
|
|
19
|
-
if filename.exists():
|
|
20
|
-
console = Console(width=80)
|
|
21
|
-
try:
|
|
22
|
-
with h5.get_file(filename, mode='r') as hdf5_file:
|
|
23
|
-
rich.print(f"HK data from {filename}", end='')
|
|
24
|
-
if "/obsid" in hdf5_file:
|
|
25
|
-
obsid = h5.get_data(hdf5_file["/obsid"]).item().decode()
|
|
26
|
-
if obsid != 'None':
|
|
27
|
-
rich.print(f", OBSID = {obsid}\n")
|
|
28
|
-
else:
|
|
29
|
-
rich.print()
|
|
30
|
-
|
|
31
|
-
# TODO:
|
|
32
|
-
# Make a table with 5 columns where the first column is the parameter name
|
|
33
|
-
# the next columns the values for each frame
|
|
34
|
-
# Detect specific names and convert the values (use dictionary dispatching?)
|
|
35
|
-
|
|
36
|
-
tmp_hk_data = {}
|
|
37
|
-
tmp_frame_numbers = []
|
|
38
|
-
|
|
39
|
-
for frame_number in {0, 1, 2, 3}:
|
|
40
|
-
if (key := f"/{frame_number}/hk_data") in hdf5_file:
|
|
41
|
-
tmp_frame_numbers.append(frame_number)
|
|
42
|
-
hk_data = h5.get_data(hdf5_file[key])
|
|
43
|
-
hk_data = HousekeepingData(hk_data)
|
|
44
|
-
# rich.print(hk_data)
|
|
45
|
-
for par_name in hk_data:
|
|
46
|
-
if par_name not in tmp_hk_data:
|
|
47
|
-
tmp_hk_data[par_name] = []
|
|
48
|
-
tmp_hk_data[par_name].append(hk_data[par_name])
|
|
49
|
-
|
|
50
|
-
table = Table(title=f"Housekeeping Data for {obsid}", expand=False)
|
|
51
|
-
table.add_column("Parameter")
|
|
52
|
-
|
|
53
|
-
for fn in tmp_frame_numbers:
|
|
54
|
-
table.add_column(f"Frame {fn}")
|
|
55
|
-
|
|
56
|
-
for k, v in tmp_hk_data.items():
|
|
57
|
-
table.add_row(str(k), *[f"0x{x:0x}" for x in v])
|
|
58
|
-
|
|
59
|
-
console.print(table)
|
|
60
|
-
|
|
61
|
-
except OSError as exc:
|
|
62
|
-
rich.print(f"{filename=!s}, {exc}")
|
|
63
|
-
else:
|
|
64
|
-
rich.print(f"no such file {filename!s}")
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if __name__ == "__main__":
|
|
68
|
-
print_hk_data()
|
scripts/print_register_map.py
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
import click
|
|
5
|
-
import rich
|
|
6
|
-
|
|
7
|
-
from egse import h5
|
|
8
|
-
from egse.reg import RegisterMap
|
|
9
|
-
|
|
10
|
-
@click.command()
|
|
11
|
-
@click.argument('filename')
|
|
12
|
-
def print_register_map(filename: str | Path):
|
|
13
|
-
"""
|
|
14
|
-
Prints the Register Map that is saved in the HDF5 file.
|
|
15
|
-
|
|
16
|
-
The FILENAME argument shall be the full path to the HDF5 file from which the register map is requested.
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
filename = Path(filename)
|
|
20
|
-
|
|
21
|
-
if filename.exists():
|
|
22
|
-
try:
|
|
23
|
-
with h5.get_file(filename, mode='r') as hdf5_file:
|
|
24
|
-
rich.print(f"Register Map from {filename}", end='')
|
|
25
|
-
if "/obsid" in hdf5_file:
|
|
26
|
-
obsid = h5.get_data(hdf5_file["/obsid"]).item().decode()
|
|
27
|
-
if obsid != 'None':
|
|
28
|
-
rich.print(f", OBSID = {obsid}\n")
|
|
29
|
-
else:
|
|
30
|
-
rich.print()
|
|
31
|
-
|
|
32
|
-
if "/register" in hdf5_file:
|
|
33
|
-
reg_data = h5.get_data(hdf5_file["/register"])
|
|
34
|
-
reg_map = RegisterMap("N-FEE", memory_map=reg_data)
|
|
35
|
-
rich.print(reg_map)
|
|
36
|
-
except OSError as exc:
|
|
37
|
-
rich.print(f"{filename=!s}, {exc}")
|
|
38
|
-
else:
|
|
39
|
-
rich.print(f"no such file {filename!s}")
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
if __name__ == "__main__":
|
|
43
|
-
print_register_map()
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
import time
|
|
5
|
-
|
|
6
|
-
from argparse import ArgumentParser
|
|
7
|
-
|
|
8
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
|
|
9
|
-
|
|
10
|
-
log = logging.getLogger(__name__)
|
|
11
|
-
logging.basicConfig()
|
|
12
|
-
|
|
13
|
-
parser = ArgumentParser()
|
|
14
|
-
parser.add_argument('device', type=int, help='beaglebone device index [0, 1]')
|
|
15
|
-
parser.add_argument('channel', type=int, help='beaglebone pwm channel [0, 3]')
|
|
16
|
-
parser.add_argument('setpoint', type=int, help='pwm duty cycle in %%')
|
|
17
|
-
args = parser.parse_args()
|
|
18
|
-
|
|
19
|
-
assert args.device in [0, 1, 2, 3], 'device index must be in [0 - 3]'
|
|
20
|
-
assert args.channel in [0, 1, 2, 3], 'pwm channel must be in [0 - 3]'
|
|
21
|
-
assert args.setpoint in range(0, 101), 'pwm duty cycle must be in [0 - 100]'
|
|
22
|
-
|
|
23
|
-
try:
|
|
24
|
-
beaglebone = BeagleboneProxy()
|
|
25
|
-
except Exception as e:
|
|
26
|
-
log.error(f'could not connect to beaglebone control server ({e})')
|
|
27
|
-
else:
|
|
28
|
-
log.info('connected to beaglebone control server')
|
|
29
|
-
|
|
30
|
-
try:
|
|
31
|
-
beaglebone.set_period(args.device, args.channel, 10000)
|
|
32
|
-
beaglebone.set_duty_cycle(args.device, args.channel, (args.setpoint * 100))
|
|
33
|
-
if args.setpoint == 0:
|
|
34
|
-
beaglebone.set_enable(args.device, args.channel, False)
|
|
35
|
-
else:
|
|
36
|
-
beaglebone.set_enable(args.device, args.channel, True)
|
|
37
|
-
except Exception as e:
|
|
38
|
-
log.error(f'could not set duty cycle ({e})')
|
|
39
|
-
|
|
40
|
-
while True:
|
|
41
|
-
time.sleep(1)
|
|
42
|
-
print(beaglebone.get_voltage(args.device, args.channel), 'V')
|
|
43
|
-
print(beaglebone.get_current(args.device, args.channel), 'A')
|
|
44
|
-
print(beaglebone.get_power(args.device, args.channel), 'W')
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
from time import sleep
|
|
5
|
-
|
|
6
|
-
from egse.vacuum.instrutech.igm402 import Igm402Proxy
|
|
7
|
-
from egse.vacuum.pfeiffer.tc400 import Tc400Proxy
|
|
8
|
-
from egse.vacuum.pfeiffer.acp40 import Acp40Proxy
|
|
9
|
-
|
|
10
|
-
log = logging.getLogger(__name__)
|
|
11
|
-
logging.basicConfig()
|
|
12
|
-
|
|
13
|
-
igm402 = Igm402Proxy()
|
|
14
|
-
tc400 = Tc400Proxy()
|
|
15
|
-
acp40 = Acp40Proxy()
|
|
16
|
-
|
|
17
|
-
# TODO: check vessel door interlock
|
|
18
|
-
# TODO: open gate valve
|
|
19
|
-
|
|
20
|
-
log.info('Starting ACP40')
|
|
21
|
-
acp40.set_enable(enable=True)
|
|
22
|
-
|
|
23
|
-
log.info('Waiting for pressure to reach 6E-0 mbar...')
|
|
24
|
-
while (igm402.get_cgn_pressure(index=1) > 6E-0):
|
|
25
|
-
sleep(1)
|
|
26
|
-
log.info('Starting TC400')
|
|
27
|
-
tc400.set_pumpingstation(enable=True)
|
|
28
|
-
tc400.set_motorpump(enable=True)
|
|
29
|
-
|
|
30
|
-
log.info('Waiting for pressure to reach 1.1E-3 mbar...')
|
|
31
|
-
while (igm402.get_cgn_pressure(index=1) > 1.1E-3):
|
|
32
|
-
last_error = tc400.get_last_error()
|
|
33
|
-
if last_error != 0:
|
|
34
|
-
log.error(f'TC400 error: {last_error}')
|
|
35
|
-
tc400.set_pumpingstation(enable=False)
|
|
36
|
-
exit()
|
|
37
|
-
sleep(1)
|
|
38
|
-
|
|
39
|
-
# log.info('Turn on ionization gauge')
|
|
40
|
-
igm402.set_filament_enable(enable=True)
|
|
41
|
-
|
|
42
|
-
log.info('Waiting for pressure to reach 1E-5 mbar...')
|
|
43
|
-
while (igm402.get_ion_gauge_pressure() > 1E-5):
|
|
44
|
-
sleep(1)
|
|
45
|
-
|
|
46
|
-
log.info('Ready for cooling')
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
from argparse import ArgumentParser
|
|
4
|
-
from egse.tempcontrol.spid.spid import PidProxy
|
|
5
|
-
|
|
6
|
-
parser = ArgumentParser()
|
|
7
|
-
parser.add_argument('channel', type=int, help='channel index')
|
|
8
|
-
parser.add_argument('setpoint', type=float, help='temperature setpoint')
|
|
9
|
-
parser.add_argument('enable', type=bool, help="Enable controller")
|
|
10
|
-
|
|
11
|
-
args = parser.parse_args()
|
|
12
|
-
|
|
13
|
-
p = PidProxy()
|
|
14
|
-
|
|
15
|
-
if args.enable:
|
|
16
|
-
p.set_temperature(args.channel, args.setpoint)
|
|
17
|
-
p.enable(args.channel)
|
|
18
|
-
else:
|
|
19
|
-
p.disable(args.channel)
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
|
|
4
|
-
|
|
5
|
-
bbb = BeagleboneProxy()
|
|
6
|
-
|
|
7
|
-
for device in range(4):
|
|
8
|
-
for channel in range(4):
|
|
9
|
-
bbb.set_enable(device, channel, False)
|
|
10
|
-
#print(bbb.get_current(device, channel))
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
import logging
|
|
4
|
-
from time import sleep
|
|
5
|
-
|
|
6
|
-
from egse.vacuum.instrutech.igm402 import Igm402Proxy
|
|
7
|
-
from egse.vacuum.pfeiffer.tc400 import Tc400Proxy
|
|
8
|
-
from egse.vacuum.pfeiffer.acp40 import Acp40Proxy
|
|
9
|
-
|
|
10
|
-
log = logging.getLogger(__name__)
|
|
11
|
-
logging.basicConfig()
|
|
12
|
-
|
|
13
|
-
igm402 = Igm402Proxy()
|
|
14
|
-
tc400 = Tc400Proxy()
|
|
15
|
-
acp40 = Acp40Proxy()
|
|
16
|
-
|
|
17
|
-
# TODO: turn of vacscan filament
|
|
18
|
-
# TODO: close gate valve
|
|
19
|
-
|
|
20
|
-
log.info('Turn of IGM402 filament')
|
|
21
|
-
igm402.set_filament_enable(enable=False)
|
|
22
|
-
|
|
23
|
-
log.info('Shut down TC400')
|
|
24
|
-
tc400.set_pumpingstation(enable=False)
|
|
25
|
-
|
|
26
|
-
log.info('Waiting for tc400 to reach 50 Hz...')
|
|
27
|
-
while (tc400.get_active_speed() > 50):
|
|
28
|
-
sleep(1)
|
|
29
|
-
|
|
30
|
-
log.info('Shut down ACP40')
|
|
31
|
-
acp40.set_enable(enable=False)
|
|
32
|
-
|
|
33
|
-
log.info('Done')
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
from argparse import ArgumentParser
|
|
2
|
-
|
|
3
|
-
import pandas as pd
|
|
4
|
-
|
|
5
|
-
# Use these names to read the agilent channels from the setup
|
|
6
|
-
from egse.state import GlobalState
|
|
7
|
-
|
|
8
|
-
# This script generates the tm_dictionary entries for the agilent channels defined in the setup.
|
|
9
|
-
# It uses Heino's harnes excel sheet to fill in what each channel is connected to in the description.
|
|
10
|
-
|
|
11
|
-
long_names = ['agilent34970_0', 'agilent34970_1', 'agilent34972_0', 'agilent34972_1']
|
|
12
|
-
short_names = ['AG34970_0', 'AG34970_1', 'AG34972_0', 'AG34972_1']
|
|
13
|
-
storage_mnemonic = ['AG34970-0', 'AG34970-1', 'AG34972-0', 'AG34972-1']
|
|
14
|
-
sensor_types = ['two_wire', 'four_wire', 'thermocouples', 'pt100']
|
|
15
|
-
|
|
16
|
-
parser = ArgumentParser()
|
|
17
|
-
parser.add_argument('--filename', '-f', type=str, required=True, help="path to Heino's connection spreadsheet")
|
|
18
|
-
args = parser.parse_args()
|
|
19
|
-
|
|
20
|
-
with open(args.filename, 'rb') as f:
|
|
21
|
-
harness = pd.read_excel(f)
|
|
22
|
-
|
|
23
|
-
setup = GlobalState.setup
|
|
24
|
-
|
|
25
|
-
for long_name, short_name, mnemonic in zip(long_names, short_names, storage_mnemonic):
|
|
26
|
-
for sensor_type in sensor_types:
|
|
27
|
-
for channel in setup.gse[long_name][sensor_type]:
|
|
28
|
-
|
|
29
|
-
# find matching column in excel sheet
|
|
30
|
-
description = ""
|
|
31
|
-
for index, row in harness.iterrows():
|
|
32
|
-
if row[1].lower() == long_name and row[2] == channel:
|
|
33
|
-
description = row[3]
|
|
34
|
-
break
|
|
35
|
-
|
|
36
|
-
print(f'{long_name} temperature read-out;{mnemonic};GSRON_{short_name}_R{channel};GSRON_{short_name}_R{channel};timestamp;;;;;{description};;Ohm;;;;;;;;')
|
|
37
|
-
print(f'{long_name} temperature read-out;{mnemonic};GSRON_{short_name}_T{channel};GSRON_{short_name}_T{channel};timestamp;;;;;{description};;DegCelsius;;;;;;;;')
|
|
38
|
-
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
for board in range(6):
|
|
2
|
-
for channel in range(4):
|
|
3
|
-
print(f'Beaglebone Temperature Control;BBB_HEATERS;GSRON_HTR_I_{board}_{channel};GSRON_HTR_I_{board}_{channel};timestamp;;;;;Current of beaglebone {board} heater {channel};;Ampère;;;;;;;;')
|
|
4
|
-
print(f'Beaglebone Temperature Control;BBB_HEATERS;GSRON_HTR_V_{board}_{channel};GSRON_HTR_V_{board}_{channel};timestamp;;;;;Voltage of beaglebone {board} heater {channel};;Volts;;;;;;;;')
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from egse.state import GlobalState
|
|
2
|
-
|
|
3
|
-
setup = GlobalState.setup
|
|
4
|
-
|
|
5
|
-
channels = []
|
|
6
|
-
for category, channels in setup.gse.spid.configuration.heaters.items():
|
|
7
|
-
for channel in channels:
|
|
8
|
-
print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_ENABLED;GSRON_PID_CH{channel[0]}_ENABLED;timestamp;;;;;{category};;;;;;;;;;')
|
|
9
|
-
print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_SETPOINT;GSRON_PID_CH{channel[0]}_SETPOINT;timestamp;;;;;{category};;DegCelsius;;;;;;;;')
|
|
10
|
-
print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_INPUT;GSRON_PID_CH{channel[0]}_INPUT;timestamp;;;;;{category};;DegCelsius;;;;;;;;')
|
|
11
|
-
print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_ERROR;GSRON_PID_CH{channel[0]}_ERROR;timestamp;;;;;{category};;DegCelsius;;;;;;;;')
|
|
12
|
-
print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_OUTPUT;GSRON_PID_CH{channel[0]}_OUTPUT;timestamp;;;;;{category};;;;;;;;;;')
|
|
13
|
-
print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_ISUM;GSRON_PID_CH{channel[0]}_ISUM;timestamp;;;;;{category};;;;;;;;;;')
|
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import multiprocessing
|
|
3
|
-
import os
|
|
4
|
-
import sys
|
|
5
|
-
import textwrap
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
|
|
8
|
-
import click
|
|
9
|
-
import git
|
|
10
|
-
import invoke
|
|
11
|
-
import rich
|
|
12
|
-
from rich.console import Console
|
|
13
|
-
|
|
14
|
-
multiprocessing.current_process().name = "update_cgse"
|
|
15
|
-
|
|
16
|
-
from egse.system import chdir
|
|
17
|
-
|
|
18
|
-
THIS_FILE_LOCATION = Path(__file__).parent
|
|
19
|
-
|
|
20
|
-
# The ROOT_PROJECT_FOLDER is the location where the Common-EGSE was installed.
|
|
21
|
-
# For development installations, this is where the git repository was cloned,
|
|
22
|
-
# for the operational system, this is usually '/cgse', but should match the
|
|
23
|
-
# PLATO_INSTALL_LOCATION environment variable in any case.
|
|
24
|
-
|
|
25
|
-
ROOT_PROJECT_FOLDER = THIS_FILE_LOCATION / "../.."
|
|
26
|
-
|
|
27
|
-
MODULE_LOGGER = logging.getLogger("egse.scripts")
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class DirtyRepoError(Exception):
|
|
31
|
-
pass
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class GitCommandError(Exception):
|
|
35
|
-
pass
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
def check_and_report_dirty_repo():
|
|
39
|
-
repo = git.Repo(Path.cwd())
|
|
40
|
-
|
|
41
|
-
if repo.is_dirty(untracked_files=False):
|
|
42
|
-
rich.print("You have uncommitted changes, unable to install the Common-EGSE.")
|
|
43
|
-
|
|
44
|
-
for item in repo.index.diff(None):
|
|
45
|
-
rich.print(f" [red]Modified: {item.a_path}")
|
|
46
|
-
|
|
47
|
-
rich.print("Stash or submit your changes to GitHub.")
|
|
48
|
-
|
|
49
|
-
raise DirtyRepoError()
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def run_shell_command(cmd: str, hide: bool = True, warn: bool = True, msg: str = None):
|
|
53
|
-
if msg is None:
|
|
54
|
-
rich.print(f"Executing '{cmd}'...", end="", flush=True)
|
|
55
|
-
else:
|
|
56
|
-
rich.print(f"{msg}...", end="", flush=True)
|
|
57
|
-
|
|
58
|
-
response = invoke.run(cmd, hide=hide, warn=warn)
|
|
59
|
-
|
|
60
|
-
if response.return_code:
|
|
61
|
-
rich.print("[red]FAILED[/red]")
|
|
62
|
-
if response.stdout:
|
|
63
|
-
rich.print(f"{response.stdout}")
|
|
64
|
-
rich.print(f"[red]{response.stderr}[/]")
|
|
65
|
-
raise GitCommandError()
|
|
66
|
-
else:
|
|
67
|
-
rich.print("[green]succeeded[/green]")
|
|
68
|
-
|
|
69
|
-
return response
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def is_operational_install(location: str):
|
|
73
|
-
# location can be the following:
|
|
74
|
-
#
|
|
75
|
-
# * root folder where Common-EGSE is installed, e.g. /cgse/lib/python
|
|
76
|
-
# * the actual 'egg' folder where Common-EGSE is installed,
|
|
77
|
-
# e.g. /cgse/lib/python/Common_EGSE-2021.3_SRON_RC37-py3.8.egg
|
|
78
|
-
|
|
79
|
-
rich.print(f"{location=}")
|
|
80
|
-
|
|
81
|
-
if ".egg" in location:
|
|
82
|
-
return True
|
|
83
|
-
|
|
84
|
-
candidates = [path for path in os.listdir(location) if path.startswith("Common_EGSE") or path.startswith("cgse")]
|
|
85
|
-
|
|
86
|
-
rich.print(f"{candidates=}")
|
|
87
|
-
|
|
88
|
-
if candidates and candidates[0].endswith(".egg"):
|
|
89
|
-
return True
|
|
90
|
-
|
|
91
|
-
# add other tests here that might indicate operational install
|
|
92
|
-
|
|
93
|
-
return False
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
@click.group()
|
|
97
|
-
def cli():
|
|
98
|
-
pass
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
@cli.command()
|
|
102
|
-
@click.option("--tag", help="The Release number to install.")
|
|
103
|
-
def ops(tag=None):
|
|
104
|
-
"""
|
|
105
|
-
Update the Common-EGSE on the operational machine. An operational installation is different
|
|
106
|
-
from a developer installation. There is no virtual environment and the all required Python
|
|
107
|
-
packages, including the Common-EGSE are installed at a specific location. The installation
|
|
108
|
-
process makes use of the following environment variables:
|
|
109
|
-
|
|
110
|
-
* PLATO_COMMON_EGSE_PATH: the location of the plato-common-egse repository on your machine, e.g., '~/git/plato-common-egse'
|
|
111
|
-
|
|
112
|
-
* PLATO_INSTALL_LOCATION: the location where the packages shall be installed, usually '/cgse'
|
|
113
|
-
|
|
114
|
-
Don't update the operational system without a tag.
|
|
115
|
-
|
|
116
|
-
The following commands will be executed:
|
|
117
|
-
|
|
118
|
-
* git fetch updates
|
|
119
|
-
* get checkout develop
|
|
120
|
-
* git checkout tags/<tag> -b <tag>-branch
|
|
121
|
-
* python -m pip install --home=$PLATO_INSTALL_LOCATION .
|
|
122
|
-
|
|
123
|
-
You will need to manually restart the core services as root on the egse-server:
|
|
124
|
-
|
|
125
|
-
* sudo systemctl restart log_cs cm_cs sm_cs pm_cs dyn_cs
|
|
126
|
-
|
|
127
|
-
NOTE: This command only works on an installation with setuptools (not a development
|
|
128
|
-
installation). The installation must have been done in the location set by the
|
|
129
|
-
environment variable PLATO_INSTALL_LOCATION.
|
|
130
|
-
|
|
131
|
-
Args:
|
|
132
|
-
tag: the tag that needs to be used for the update.
|
|
133
|
-
|
|
134
|
-
"""
|
|
135
|
-
|
|
136
|
-
try:
|
|
137
|
-
plato_install_location = os.environ["PLATO_INSTALL_LOCATION"]
|
|
138
|
-
MODULE_LOGGER.info(f"{plato_install_location=}")
|
|
139
|
-
except KeyError:
|
|
140
|
-
rich.print(
|
|
141
|
-
"[red]On an operational system, the PLATO_INSTALL_LOCATION environment variable must "
|
|
142
|
-
"be set.[/]\n"
|
|
143
|
-
"Please set this to the root folder of the installation, usually [default]'/cgse'."
|
|
144
|
-
)
|
|
145
|
-
return
|
|
146
|
-
|
|
147
|
-
if not Path(plato_install_location).exists():
|
|
148
|
-
rich.print(
|
|
149
|
-
f"[orange3]I didn't find the '{plato_install_location}' location on your system.[/]\n"
|
|
150
|
-
"Please check if the PLATO_INSTALL_LOCATION is set to the correct folder."
|
|
151
|
-
)
|
|
152
|
-
return
|
|
153
|
-
|
|
154
|
-
try:
|
|
155
|
-
plato_cgse_location = os.environ["PLATO_COMMON_EGSE_PATH"]
|
|
156
|
-
MODULE_LOGGER.info(f"{plato_cgse_location=}")
|
|
157
|
-
except KeyError:
|
|
158
|
-
rich.print(
|
|
159
|
-
"[red]On an operational system, the PLATO_COMMON_EGSE_PATH environment variable must "
|
|
160
|
-
"be set.[/]\nPlease set this to the root folder of the cloned repository, "
|
|
161
|
-
"usually [default]'~/git/plato-common-egse'."
|
|
162
|
-
)
|
|
163
|
-
return
|
|
164
|
-
|
|
165
|
-
with chdir(plato_cgse_location):
|
|
166
|
-
rich.print("Updating plato-common-egse...")
|
|
167
|
-
|
|
168
|
-
try:
|
|
169
|
-
run_shell_command("git fetch updates")
|
|
170
|
-
run_shell_command("git checkout develop")
|
|
171
|
-
except GitCommandError:
|
|
172
|
-
return
|
|
173
|
-
|
|
174
|
-
try:
|
|
175
|
-
check_and_report_dirty_repo()
|
|
176
|
-
except DirtyRepoError:
|
|
177
|
-
return
|
|
178
|
-
|
|
179
|
-
if tag:
|
|
180
|
-
try:
|
|
181
|
-
run_shell_command(f"git checkout tags/{tag} -b {tag}-branch")
|
|
182
|
-
run_shell_command(f"{sys.executable} -m pip install --prefix={plato_install_location} . ")
|
|
183
|
-
except GitCommandError:
|
|
184
|
-
return
|
|
185
|
-
else:
|
|
186
|
-
# git rev-list --tags --timestamp --no-walk | sort -nr | head -n1 | cut -f 2 -d ' ' | xargs git describe --contains
|
|
187
|
-
rich.print("Usage: update_cgse ops --tag=<tag name>")
|
|
188
|
-
rc = invoke.run("git describe --tags --abbrev=0", hide="stdout")
|
|
189
|
-
rich.print(f"The latest tag name is '{rc.stdout.strip()}'.")
|
|
190
|
-
return
|
|
191
|
-
|
|
192
|
-
console = Console()
|
|
193
|
-
console.print(
|
|
194
|
-
textwrap.dedent(
|
|
195
|
-
f"""
|
|
196
|
-
To complete the installation process, perform the following actions:
|
|
197
|
-
|
|
198
|
-
On the egse-client:
|
|
199
|
-
* stop all device control servers from the PM GUI
|
|
200
|
-
|
|
201
|
-
On the egse-server:
|
|
202
|
-
* run (in the root folder of plato-common-egse): [grey50]invoke stop-core-egse[/]
|
|
203
|
-
* the core services should automatically be re-started by systemd,
|
|
204
|
-
* (if not, run (in the root folder of plato-common-egse): [grey50]invoke start-core-egse[/])
|
|
205
|
-
* Alternatively, you can run: [grey50]sudo systemctl restart log_cs sm_cs cm_cs pm_cs syn_cs[/]
|
|
206
|
-
|
|
207
|
-
"""
|
|
208
|
-
), highlight=False
|
|
209
|
-
)
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
@cli.command()
|
|
214
|
-
def develop():
|
|
215
|
-
"""
|
|
216
|
-
Update the Common-EGSE on a develop machine.
|
|
217
|
-
|
|
218
|
-
The following commands will be executed in the background:
|
|
219
|
-
|
|
220
|
-
* git fetch updates
|
|
221
|
-
|
|
222
|
-
* git rebase updates/develop
|
|
223
|
-
|
|
224
|
-
* python3 -m pip install -e .
|
|
225
|
-
|
|
226
|
-
"""
|
|
227
|
-
|
|
228
|
-
with chdir(ROOT_PROJECT_FOLDER):
|
|
229
|
-
rich.print("Updating plato-common-egse development environment.")
|
|
230
|
-
|
|
231
|
-
try:
|
|
232
|
-
check_and_report_dirty_repo()
|
|
233
|
-
except DirtyRepoError:
|
|
234
|
-
return
|
|
235
|
-
|
|
236
|
-
try:
|
|
237
|
-
run_shell_command("git fetch updates")
|
|
238
|
-
run_shell_command("git checkout develop")
|
|
239
|
-
run_shell_command("git rebase updates/develop")
|
|
240
|
-
run_shell_command(f"{sys.executable} -m pip install -e .")
|
|
241
|
-
response = run_shell_command(f"{sys.executable} -m egse.version")
|
|
242
|
-
except GitCommandError:
|
|
243
|
-
return
|
|
244
|
-
|
|
245
|
-
release = response.tail("stdout").split("\n")[-1]
|
|
246
|
-
|
|
247
|
-
try:
|
|
248
|
-
response = run_shell_command("git describe --tags --long")
|
|
249
|
-
tag = response.stdout.strip().split("-")
|
|
250
|
-
|
|
251
|
-
# The tag format is:
|
|
252
|
-
# * the annotated tag
|
|
253
|
-
# * the number of commits since the tag
|
|
254
|
-
# * abbreviated commit name (starts with the letter 'g')
|
|
255
|
-
|
|
256
|
-
number_of_commits = tag[-2]
|
|
257
|
-
bare_tag = "-".join(tag[:-2])
|
|
258
|
-
|
|
259
|
-
except GitCommandError:
|
|
260
|
-
return
|
|
261
|
-
|
|
262
|
-
rich.print(f"{release.strip()}")
|
|
263
|
-
if number_of_commits != 0:
|
|
264
|
-
rich.print(f"Number of commits since {bare_tag}: {number_of_commits}")
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
if __name__ == "__main__":
|
|
268
|
-
cli()
|