cgse 2024.7.0__py3-none-any.whl → 2025.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.1.dist-info/METADATA +38 -0
- cgse-2025.0.1.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.1.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
egse/vacuum/keller/kellerBus.py
DELETED
|
@@ -1,256 +0,0 @@
|
|
|
1
|
-
from struct import unpack, pack
|
|
2
|
-
from serial import Serial
|
|
3
|
-
|
|
4
|
-
class kellerBusBadAddress(Exception):
|
|
5
|
-
def __init__(self):
|
|
6
|
-
super().__init__("Invalid KellerBus address")
|
|
7
|
-
|
|
8
|
-
class kellerBusException1(Exception):
|
|
9
|
-
def __init__(self):
|
|
10
|
-
super().__init__("Illegal, non-implemented function")
|
|
11
|
-
|
|
12
|
-
class kellerBusBadCrcException(Exception):
|
|
13
|
-
def __init__(self):
|
|
14
|
-
super().__init__("CRC is incorrect")
|
|
15
|
-
|
|
16
|
-
class kellerBusException2(Exception):
|
|
17
|
-
def __init__(self):
|
|
18
|
-
super().__init__("Illegal data address")
|
|
19
|
-
|
|
20
|
-
class kellerBusException3(Exception):
|
|
21
|
-
def __init__(self):
|
|
22
|
-
super().__init__("Illegal data value")
|
|
23
|
-
|
|
24
|
-
class kellerBusException32(Exception):
|
|
25
|
-
def __init__(self):
|
|
26
|
-
super().__init__("Initialization required")
|
|
27
|
-
|
|
28
|
-
class kellerBusBadException(Exception):
|
|
29
|
-
def __init__(self):
|
|
30
|
-
super().__init__("Incorrect data received")
|
|
31
|
-
|
|
32
|
-
class kellerBusNotReadable(Exception):
|
|
33
|
-
def __init__(self):
|
|
34
|
-
super().__init__("No data received as response")
|
|
35
|
-
|
|
36
|
-
class kellerBusRxException(Exception):
|
|
37
|
-
def __init__(self):
|
|
38
|
-
super().__init__("Received bad data")
|
|
39
|
-
|
|
40
|
-
class kellerBus(Serial):
|
|
41
|
-
def __init__(self, port, baudrate, timeout=0.2):
|
|
42
|
-
super().__init__(port=port, baudrate=baudrate, timeout=timeout)
|
|
43
|
-
|
|
44
|
-
def calculateCrc16(self, data: bytes):
|
|
45
|
-
crc = 0xFFFF
|
|
46
|
-
|
|
47
|
-
for byte in data:
|
|
48
|
-
crc = int(crc ^ byte)
|
|
49
|
-
for bit in range(8):
|
|
50
|
-
b = True if crc % 2 ==1 else False
|
|
51
|
-
crc = int(crc / 2)
|
|
52
|
-
crc = int(crc ^ 0xA001) if b else crc
|
|
53
|
-
|
|
54
|
-
high, low = crc >> 8, crc & 0x00FF
|
|
55
|
-
return high, low
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
def transferData(self, txBuf, nRead):
|
|
59
|
-
self.reset_input_buffer()
|
|
60
|
-
self.reset_output_buffer()
|
|
61
|
-
|
|
62
|
-
txHigh, txLow = self.calculateCrc16(bytes(txBuf))
|
|
63
|
-
|
|
64
|
-
txBuf.append(txHigh)
|
|
65
|
-
txBuf.append(txLow)
|
|
66
|
-
# print(txBuf)
|
|
67
|
-
self.write(txBuf)
|
|
68
|
-
|
|
69
|
-
rxBuf = self.read(nRead)
|
|
70
|
-
|
|
71
|
-
# print(rxBuf)
|
|
72
|
-
|
|
73
|
-
if len(rxBuf) == 0:
|
|
74
|
-
raise kellerBusNotReadable()
|
|
75
|
-
|
|
76
|
-
rxHigh, rxLow = self.calculateCrc16(bytes(rxBuf[:-2]))
|
|
77
|
-
|
|
78
|
-
if (rxBuf[-2] != rxHigh) or (rxBuf[-1] != rxLow):
|
|
79
|
-
raise kellerBusBadCrcException()
|
|
80
|
-
|
|
81
|
-
if txBuf[0] != rxBuf[0]:
|
|
82
|
-
raise kellerBusBadAddress()
|
|
83
|
-
|
|
84
|
-
if txBuf[1] == rxBuf[1]:
|
|
85
|
-
return rxBuf
|
|
86
|
-
|
|
87
|
-
if rxBuf[2] == 1:
|
|
88
|
-
raise kellerBusException1()
|
|
89
|
-
elif rxBuf[2] == 2:
|
|
90
|
-
raise kellerBusException2()
|
|
91
|
-
elif rxBuf[2] == 3:
|
|
92
|
-
raise kellerBusException3()
|
|
93
|
-
elif rxBuf[2] == 32:
|
|
94
|
-
raise kellerBusException32()
|
|
95
|
-
else:
|
|
96
|
-
raise kellerBusBadException()
|
|
97
|
-
|
|
98
|
-
raise kellerBusRxException()
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
def F48(self, address):
|
|
102
|
-
''' Initialize Keller Bus device
|
|
103
|
-
|
|
104
|
-
: param address = int Device address
|
|
105
|
-
'''
|
|
106
|
-
code = 48
|
|
107
|
-
nRead = 10
|
|
108
|
-
txBuf = [address, code]
|
|
109
|
-
try:
|
|
110
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
111
|
-
|
|
112
|
-
data = {
|
|
113
|
-
"deviceClass" :rxBuf[2],
|
|
114
|
-
"deviceGroup" :rxBuf[3],
|
|
115
|
-
"deviceYear" : rxBuf[4],
|
|
116
|
-
"deviceWeek" :rxBuf[5],
|
|
117
|
-
"deviceBuffer" :rxBuf[6],
|
|
118
|
-
"deviceState" : rxBuf[7]
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return data
|
|
122
|
-
|
|
123
|
-
except Exception as exc:
|
|
124
|
-
raise exc
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
def F30(self, address, coef):
|
|
128
|
-
code = 30
|
|
129
|
-
nRead = 8
|
|
130
|
-
txBuf = [address, code, coef]
|
|
131
|
-
|
|
132
|
-
try:
|
|
133
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
134
|
-
|
|
135
|
-
return unpack('f', rxBuf[2:6])[0]
|
|
136
|
-
|
|
137
|
-
except Exception as exc:
|
|
138
|
-
raise exc
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
def F31(self, address, coef, value):
|
|
142
|
-
code = 31
|
|
143
|
-
nRead = 5
|
|
144
|
-
value = pack('f', value)
|
|
145
|
-
txBuf = [address, code, coef]
|
|
146
|
-
txBuf += value
|
|
147
|
-
try:
|
|
148
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
149
|
-
return True
|
|
150
|
-
except Exception as exc:
|
|
151
|
-
raise exc
|
|
152
|
-
|
|
153
|
-
def F32(self, address, num):
|
|
154
|
-
code = 32
|
|
155
|
-
nRead = 5
|
|
156
|
-
txBuf = [address, code, num]
|
|
157
|
-
try:
|
|
158
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
159
|
-
return rxBuf[3]
|
|
160
|
-
except Exception as exc:
|
|
161
|
-
raise exc
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
def F66(self, address, new_address):
|
|
165
|
-
code = 66
|
|
166
|
-
nRead = 5
|
|
167
|
-
txBuf = [address, code, new_address]
|
|
168
|
-
try:
|
|
169
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
170
|
-
return rxBuf[3]
|
|
171
|
-
except Exception as exc:
|
|
172
|
-
raise exc
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
def F69(self, address):
|
|
176
|
-
code = 69
|
|
177
|
-
nRead = 8
|
|
178
|
-
txBuf = [address, code]
|
|
179
|
-
try:
|
|
180
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
181
|
-
return 256*65536*rxBuf[3]*65536*rxBuf[4]*256*rxBuf[5]*rxBuf[6]
|
|
182
|
-
except Exception as exc:
|
|
183
|
-
raise exc
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
def F73(self, address, channel):
|
|
187
|
-
code = 73
|
|
188
|
-
nRead = 9
|
|
189
|
-
txBuf = [address, code, channel]
|
|
190
|
-
try:
|
|
191
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
192
|
-
|
|
193
|
-
value = unpack('!f', rxBuf[2:6])
|
|
194
|
-
|
|
195
|
-
return value[0], rxBuf[6]
|
|
196
|
-
except Exception as exc:
|
|
197
|
-
raise exc
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
def F95(self, address, command):
|
|
201
|
-
code = 95
|
|
202
|
-
nRead = 9
|
|
203
|
-
txBuf = [address, code, command]
|
|
204
|
-
try:
|
|
205
|
-
self.transferData(txBuf, nRead)
|
|
206
|
-
return True
|
|
207
|
-
except Exception as exc:
|
|
208
|
-
raise exc
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
def F95_val(self, address, command, value):
|
|
212
|
-
code = 95
|
|
213
|
-
nRead = 9
|
|
214
|
-
txBuf = [address, code, command, value]
|
|
215
|
-
try:
|
|
216
|
-
self.transferData(txBuf, nRead)
|
|
217
|
-
return True
|
|
218
|
-
except Exception as exc:
|
|
219
|
-
raise exc
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
def F100(self, address, index):
|
|
223
|
-
code = 100
|
|
224
|
-
nRead = 9
|
|
225
|
-
txBuf = [address, code, index]
|
|
226
|
-
try:
|
|
227
|
-
rxBuf = self.transferData(txBuf, nRead)
|
|
228
|
-
|
|
229
|
-
data = {
|
|
230
|
-
'PARA0': f"{rxBuf[2]:08b}",
|
|
231
|
-
'PARA1': f"{rxBuf[3]:08b}",
|
|
232
|
-
'PARA2': f"{rxBuf[4]:08b}",
|
|
233
|
-
'PARA3': f"{rxBuf[5]:08b}",
|
|
234
|
-
'PARA4': f"{rxBuf[6]:08b}"
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return data
|
|
238
|
-
except Exception as exc:
|
|
239
|
-
raise exc
|
|
240
|
-
|
|
241
|
-
def main():
|
|
242
|
-
leo3 = []
|
|
243
|
-
|
|
244
|
-
leo3 = kellerBus('/dev/ttyUSB0', 9600, 2)
|
|
245
|
-
|
|
246
|
-
for idx in [1, 2, 3, 4, 5, 6]:
|
|
247
|
-
print(f"Keller LEO3 address: {idx}")
|
|
248
|
-
print(leo3.F48(idx))
|
|
249
|
-
print(leo3.F100(idx, 2))
|
|
250
|
-
while 1:
|
|
251
|
-
for idx in [1, 2, 3, 4, 5, 6]:
|
|
252
|
-
print(f"Address : {idx}, Pressure: {leo3.F73(idx, 1)}, Temperature: {leo3.F73(idx, 4)}")
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
if __name__ == "__main__":
|
|
256
|
-
main()
|
egse/vacuum/keller/leo3.py
DELETED
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from prometheus_client import Gauge
|
|
4
|
-
|
|
5
|
-
from egse.command import ClientServerCommand
|
|
6
|
-
from egse.control import ControlServer
|
|
7
|
-
from egse.protocol import CommandProtocol
|
|
8
|
-
from egse.proxy import Proxy
|
|
9
|
-
from egse.settings import Settings
|
|
10
|
-
from egse.system import format_datetime
|
|
11
|
-
from egse.vacuum.keller.leo3_controller import Leo3Controller
|
|
12
|
-
from egse.vacuum.keller.leo3_controller import Leo3Simulator
|
|
13
|
-
from egse.vacuum.keller.leo3_interface import Leo3Interface
|
|
14
|
-
from egse.zmq_ser import bind_address
|
|
15
|
-
from egse.zmq_ser import connect_address
|
|
16
|
-
|
|
17
|
-
LOGGER = logging.getLogger(__name__)
|
|
18
|
-
|
|
19
|
-
CTRL_SETTINGS = Settings.load("KELLER Leo3 Control Server")
|
|
20
|
-
DEVICE_SETTINGS = Settings.load(filename="leo3.yaml")
|
|
21
|
-
|
|
22
|
-
class Leo3Command(ClientServerCommand):
|
|
23
|
-
pass
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
class Leo3Protocol(CommandProtocol):
|
|
27
|
-
|
|
28
|
-
def __init__(self, control_server: ControlServer):
|
|
29
|
-
|
|
30
|
-
super().__init__()
|
|
31
|
-
self.control_server = control_server
|
|
32
|
-
|
|
33
|
-
if Settings.simulation_mode():
|
|
34
|
-
self.dev = Leo3Simulator()
|
|
35
|
-
else:
|
|
36
|
-
self.dev = Leo3Controller()
|
|
37
|
-
|
|
38
|
-
self.load_commands(DEVICE_SETTINGS.Commands, Leo3Command, Leo3Interface)
|
|
39
|
-
self.build_device_method_lookup_table(self.dev)
|
|
40
|
-
|
|
41
|
-
self.addresses = [1, 2, 3, 4, 5, 6]
|
|
42
|
-
|
|
43
|
-
self.gauge_pressures = []
|
|
44
|
-
self.gauge_temperatures = []
|
|
45
|
-
self.gauge_status = []
|
|
46
|
-
|
|
47
|
-
self.invalid_result = [False] * 6
|
|
48
|
-
|
|
49
|
-
for address in self.addresses:
|
|
50
|
-
self.gauge_pressures += [Gauge(f'GSRON_LEO3_{address}_P', '')]
|
|
51
|
-
self.gauge_temperatures += [Gauge(f'GSRON_LEO3_{address}_T', '')]
|
|
52
|
-
self.gauge_status += [Gauge(f'GSRON_LEO3_{address}_STAT', '')]
|
|
53
|
-
try:
|
|
54
|
-
self.dev.initialize(address)
|
|
55
|
-
except Exception as exc:
|
|
56
|
-
LOGGER.info(f"Could not initialize kellerBus {address}: {exc}")
|
|
57
|
-
# move to parent class?
|
|
58
|
-
def get_bind_address(self):
|
|
59
|
-
return bind_address(
|
|
60
|
-
self.control_server.get_communication_protocol(),
|
|
61
|
-
self.control_server.get_commanding_port(),
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def get_status(self):
|
|
66
|
-
status_dict = super().get_status()
|
|
67
|
-
|
|
68
|
-
return status_dict
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
def get_housekeeping(self) -> dict:
|
|
72
|
-
result = dict()
|
|
73
|
-
result["timestamp"] = format_datetime()
|
|
74
|
-
|
|
75
|
-
for idx, address in enumerate(self.addresses):
|
|
76
|
-
try:
|
|
77
|
-
result[f"GSRON_LEO3_{address}_P"], _ = self.dev.get_pressure(address)
|
|
78
|
-
result[f"GSRON_LEO3_{address}_T"], result[f'GSRON_LEO3_{address}_STAT'] = self.dev.get_temperature(address)
|
|
79
|
-
except Exception as exc:
|
|
80
|
-
result[f"GSRON_LEO3_{address}_P"] = 0
|
|
81
|
-
result[f"GSRON_LEO3_{address}_T"], result[f"GSRON_LEO3_{address}_STAT"] = 0, 0
|
|
82
|
-
|
|
83
|
-
if not self.invalid_result[idx]:
|
|
84
|
-
self.invalid_result[idx] = True
|
|
85
|
-
LOGGER.warning(f"Unable to get HK for KellerBus {address}: {exc}")
|
|
86
|
-
else:
|
|
87
|
-
self.invalid_result[idx] = False
|
|
88
|
-
finally:
|
|
89
|
-
self.gauge_pressures[idx].set(result[f"GSRON_LEO3_{address}_P"])
|
|
90
|
-
self.gauge_temperatures[idx].set(result[f"GSRON_LEO3_{address}_T"])
|
|
91
|
-
self.gauge_status[idx].set(result[f'GSRON_LEO3_{address}_STAT'])
|
|
92
|
-
|
|
93
|
-
return result
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
class Leo3Proxy(Proxy, Leo3Interface):
|
|
97
|
-
def __init__(self):
|
|
98
|
-
super().__init__(
|
|
99
|
-
connect_address(
|
|
100
|
-
CTRL_SETTINGS.PROTOCOL, CTRL_SETTINGS.HOSTNAME, CTRL_SETTINGS.COMMANDING_PORT))
|
egse/vacuum/keller/leo3.yaml
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# The commands in this file are fake.
|
|
2
|
-
# One of the parameters of the command is the device index. If this is included here, the client
|
|
3
|
-
# will have to pass this argument for every function call. I prefer to add this on the
|
|
4
|
-
# controller side. Note that arguments must be included in the cmd string for the proxy interface.
|
|
5
|
-
|
|
6
|
-
BaseClass:
|
|
7
|
-
egse.vacuum.keller.leo3_interace.Leo3Interface
|
|
8
|
-
|
|
9
|
-
ProxyClass:
|
|
10
|
-
egse.vacuum.keller.leo3.Leo3proxy
|
|
11
|
-
|
|
12
|
-
ControlServer:
|
|
13
|
-
egse.vacuum.keller.leo3_cs
|
|
14
|
-
|
|
15
|
-
Commands:
|
|
16
|
-
disconnect:
|
|
17
|
-
description: Disconnect from the device.
|
|
18
|
-
|
|
19
|
-
connect:
|
|
20
|
-
description: Connect to the device.
|
|
21
|
-
|
|
22
|
-
reconnect:
|
|
23
|
-
description: Reconnect to the device.
|
|
24
|
-
This command will force a disconnect and then try to re-connect to the controller.
|
|
25
|
-
is_connected:
|
|
26
|
-
description: Check if the Thorlabs Hardware Controller is connected.
|
|
27
|
-
|
|
28
|
-
is_simulator:
|
|
29
|
-
description: Ask if the control server is a simulator instead of the real controller class.
|
|
30
|
-
returns: bool | True if the far end is a simulator instead of the real hardware
|
|
31
|
-
|
|
32
|
-
get_pressure:
|
|
33
|
-
description: Get the device status string.
|
|
34
|
-
returns: str | status string
|
|
35
|
-
|
|
36
|
-
get_temperature:
|
|
37
|
-
description: Read IG and CG pressures combined (single value?).
|
|
38
|
-
returns: str | String reply containing the pressure in Torr
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from egse.settings import Settings
|
|
4
|
-
from egse.vacuum.keller.kellerBus import kellerBus
|
|
5
|
-
from egse.vacuum.keller.leo3_interface import Leo3Interface
|
|
6
|
-
|
|
7
|
-
logger = logging.getLogger(__name__)
|
|
8
|
-
|
|
9
|
-
# Load the device settings from the global common-egse config file
|
|
10
|
-
DEVICE_SETTINGS = Settings.load("KELLER Leo3 Controller")
|
|
11
|
-
|
|
12
|
-
# Load the device protocol
|
|
13
|
-
DEVICE_PROTOCOL = Settings.load(filename='leo3.yaml')['Commands']
|
|
14
|
-
|
|
15
|
-
class Leo3Controller(kellerBus, Leo3Interface):
|
|
16
|
-
def __init__(self, port=None, baudrate=None, timeout=1):
|
|
17
|
-
|
|
18
|
-
port = DEVICE_SETTINGS.PORT if not port else port
|
|
19
|
-
baudrate = DEVICE_SETTINGS.BAUDRATE if not baudrate else baudrate
|
|
20
|
-
|
|
21
|
-
super().__init__(port, baudrate, timeout)
|
|
22
|
-
|
|
23
|
-
def connect(self):
|
|
24
|
-
self.open()
|
|
25
|
-
|
|
26
|
-
def disconnect(self):
|
|
27
|
-
self.close()
|
|
28
|
-
|
|
29
|
-
def reconnect(self):
|
|
30
|
-
self.close()
|
|
31
|
-
self.open()
|
|
32
|
-
|
|
33
|
-
def is_connected(self):
|
|
34
|
-
return self.is_open
|
|
35
|
-
|
|
36
|
-
def is_simulator(self):
|
|
37
|
-
return False
|
|
38
|
-
|
|
39
|
-
def get_idn(self, address):
|
|
40
|
-
return self.F69(address)
|
|
41
|
-
|
|
42
|
-
def initialize(self, address):
|
|
43
|
-
return self.F48(address)
|
|
44
|
-
|
|
45
|
-
def get_pressure(self, address):
|
|
46
|
-
p, stat = self.F73(address, 1)
|
|
47
|
-
return p, stat
|
|
48
|
-
|
|
49
|
-
def get_temperature(self, address):
|
|
50
|
-
t, stat = self.F73(address, 4)
|
|
51
|
-
return t, stat
|
|
52
|
-
|
|
53
|
-
class Leo3Simulator():
|
|
54
|
-
def __init__(self):
|
|
55
|
-
pass
|
|
56
|
-
|
|
57
|
-
def connect(self):
|
|
58
|
-
return True
|
|
59
|
-
|
|
60
|
-
def disconnect(self):
|
|
61
|
-
return True
|
|
62
|
-
|
|
63
|
-
def reconnect(self):
|
|
64
|
-
return True
|
|
65
|
-
|
|
66
|
-
def is_connected(self):
|
|
67
|
-
return True
|
|
68
|
-
|
|
69
|
-
def is_simulator(self):
|
|
70
|
-
return False
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
def get_pressure(self, address, index):
|
|
74
|
-
return 10, 1
|
|
75
|
-
|
|
76
|
-
def get_temperature(self, address, index):
|
|
77
|
-
return 20, 1
|
|
78
|
-
|
|
79
|
-
if __name__ == "__main__":
|
|
80
|
-
leo = Leo3Controller()
|
|
81
|
-
print(leo.get_pressure(1, 1))
|
egse/vacuum/keller/leo3_cs.py
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
import click
|
|
2
|
-
import logging
|
|
3
|
-
import sys
|
|
4
|
-
|
|
5
|
-
import zmq
|
|
6
|
-
from prometheus_client import start_http_server
|
|
7
|
-
|
|
8
|
-
from egse.control import ControlServer
|
|
9
|
-
from egse.settings import Settings
|
|
10
|
-
from egse.vacuum.keller.leo3 import Leo3Protocol, Leo3Proxy
|
|
11
|
-
|
|
12
|
-
logging.basicConfig(level=logging.DEBUG, format=Settings.LOG_FORMAT_FULL)
|
|
13
|
-
|
|
14
|
-
logger = logging.getLogger(__name__)
|
|
15
|
-
|
|
16
|
-
CTRL_SETTINGS = Settings.load("KELLER Leo3 Control Server")
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class Leo3ControlServer(ControlServer):
|
|
20
|
-
|
|
21
|
-
def __init__(self):
|
|
22
|
-
super().__init__()
|
|
23
|
-
|
|
24
|
-
self.device_protocol = Leo3Protocol(self)
|
|
25
|
-
|
|
26
|
-
self.logger.debug(f"Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}")
|
|
27
|
-
|
|
28
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
29
|
-
|
|
30
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
31
|
-
|
|
32
|
-
self.set_hk_delay(5)
|
|
33
|
-
|
|
34
|
-
def get_communication_protocol(self):
|
|
35
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
36
|
-
|
|
37
|
-
def get_commanding_port(self):
|
|
38
|
-
return CTRL_SETTINGS.COMMANDING_PORT
|
|
39
|
-
|
|
40
|
-
def get_service_port(self):
|
|
41
|
-
return CTRL_SETTINGS.SERVICE_PORT
|
|
42
|
-
|
|
43
|
-
def get_monitoring_port(self):
|
|
44
|
-
return CTRL_SETTINGS.MONITORING_PORT
|
|
45
|
-
|
|
46
|
-
def get_storage_mnemonic(self):
|
|
47
|
-
try:
|
|
48
|
-
return CTRL_SETTINGS.STORAGE_MNEMONIC
|
|
49
|
-
except AttributeError:
|
|
50
|
-
return "LEO3"
|
|
51
|
-
|
|
52
|
-
def before_serve(self):
|
|
53
|
-
start_http_server(CTRL_SETTINGS.METRICS_PORT)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@click.group()
|
|
57
|
-
def cli():
|
|
58
|
-
pass
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@cli.command()
|
|
62
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the LEO3 Simulator as the backend.")
|
|
63
|
-
def start(simulator):
|
|
64
|
-
"""Start the IGM402 Control Server."""
|
|
65
|
-
|
|
66
|
-
if simulator:
|
|
67
|
-
Settings.set_simulation_mode(True)
|
|
68
|
-
try:
|
|
69
|
-
controller = Leo3ControlServer()
|
|
70
|
-
controller.serve()
|
|
71
|
-
|
|
72
|
-
except KeyboardInterrupt:
|
|
73
|
-
print("Shutdown requested...exiting")
|
|
74
|
-
|
|
75
|
-
except SystemExit as exit_code:
|
|
76
|
-
print("System Exit with code {}.".format(exit_code))
|
|
77
|
-
sys.exit(exit_code)
|
|
78
|
-
|
|
79
|
-
except Exception:
|
|
80
|
-
|
|
81
|
-
logger.exception("Cannot start the LEO3 Control Server")
|
|
82
|
-
# The above line does exactly the same as the traceback, but on the logger
|
|
83
|
-
# import traceback
|
|
84
|
-
# traceback.print_exc(file=sys.stdout)
|
|
85
|
-
|
|
86
|
-
return 0
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
@cli.command()
|
|
90
|
-
def stop():
|
|
91
|
-
"""Send a 'quit_server' command to the Control Server."""
|
|
92
|
-
|
|
93
|
-
with Leo3Proxy() as proxy:
|
|
94
|
-
|
|
95
|
-
sp = proxy.get_service_proxy()
|
|
96
|
-
sp.quit_server()
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if __name__ == "__main__":
|
|
100
|
-
|
|
101
|
-
sys.exit(cli())
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
from egse.device import DeviceInterface
|
|
2
|
-
from egse.decorators import dynamic_interface
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class Leo3Interface(DeviceInterface):
|
|
6
|
-
|
|
7
|
-
@dynamic_interface
|
|
8
|
-
def connect(self):
|
|
9
|
-
return NotImplemented
|
|
10
|
-
|
|
11
|
-
@dynamic_interface
|
|
12
|
-
def disconnect(self):
|
|
13
|
-
return NotImplemented
|
|
14
|
-
|
|
15
|
-
@dynamic_interface
|
|
16
|
-
def reconnect(self):
|
|
17
|
-
return NotImplemented
|
|
18
|
-
|
|
19
|
-
@dynamic_interface
|
|
20
|
-
def is_connected(self):
|
|
21
|
-
return NotImplemented
|
|
22
|
-
|
|
23
|
-
@dynamic_interface
|
|
24
|
-
def is_simulator(self):
|
|
25
|
-
return NotImplemented
|
|
26
|
-
|
|
27
|
-
@dynamic_interface
|
|
28
|
-
def get_pressure(self, address, index):
|
|
29
|
-
return NotImplemented
|
|
30
|
-
|
|
31
|
-
@dynamic_interface
|
|
32
|
-
def get_temperature(self, address, index):
|
|
33
|
-
return NotImplemented
|
egse/vacuum/mks/evision.py
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from prometheus_client import Gauge
|
|
4
|
-
|
|
5
|
-
from egse.control import ControlServer
|
|
6
|
-
from egse.command import ClientServerCommand
|
|
7
|
-
from egse.protocol import CommandProtocol
|
|
8
|
-
from egse.proxy import Proxy
|
|
9
|
-
from egse.settings import Settings
|
|
10
|
-
from egse.zmq_ser import bind_address
|
|
11
|
-
from egse.system import format_datetime
|
|
12
|
-
from egse.zmq_ser import connect_address
|
|
13
|
-
|
|
14
|
-
from egse.vacuum.mks.evision_interface import EvisionInterface
|
|
15
|
-
from egse.vacuum.mks.evision_devif import EvisionDriver
|
|
16
|
-
from egse.vacuum.mks.evision_simulator import EvisionSimulator
|
|
17
|
-
|
|
18
|
-
logger = logging.getLogger(__name__)
|
|
19
|
-
|
|
20
|
-
DEVICE_SETTINGS = Settings.load(filename="evision.yaml")
|
|
21
|
-
CTRL_SETTINGS = Settings.load("MKS E-Vision RGA Control Server")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class EvisionCommand(ClientServerCommand):
|
|
25
|
-
pass
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class EvisionProtocol(CommandProtocol):
|
|
29
|
-
|
|
30
|
-
def __init__(self, control_server: ControlServer):
|
|
31
|
-
|
|
32
|
-
super().__init__()
|
|
33
|
-
self.control_server = control_server
|
|
34
|
-
|
|
35
|
-
if Settings.simulation_mode():
|
|
36
|
-
self.dev = EvisionSimulator()
|
|
37
|
-
else:
|
|
38
|
-
self.dev = EvisionDriver()
|
|
39
|
-
|
|
40
|
-
self.load_commands(DEVICE_SETTINGS.Commands, EvisionCommand, EvisionInterface)
|
|
41
|
-
self.build_device_method_lookup_table(self.dev)
|
|
42
|
-
|
|
43
|
-
self.dev.control_sensor()
|
|
44
|
-
self.dev.filament_status()
|
|
45
|
-
self.dev.rga_status()
|
|
46
|
-
|
|
47
|
-
self.massreading_gauges = [Gauge(f'GSRON_EVISION_MASSREADING_{i}', '') for i in range(0, 200)]
|
|
48
|
-
|
|
49
|
-
# move to parent class?
|
|
50
|
-
def get_bind_address(self):
|
|
51
|
-
return bind_address(
|
|
52
|
-
self.control_server.get_communication_protocol(),
|
|
53
|
-
self.control_server.get_commanding_port(),
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
def get_status(self):
|
|
58
|
-
status_dict = super().get_status()
|
|
59
|
-
|
|
60
|
-
status_dict['ScanStatus'] = self.dev.get_scan_status()
|
|
61
|
-
status_dict['RGAStatus'] = self.dev.get_rga_status()
|
|
62
|
-
status_dict['FilamentStatus'] = self.dev.get_filament_status()
|
|
63
|
-
status_dict['MassReading'] = self.dev.get_mass_reading()
|
|
64
|
-
return status_dict
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
def get_housekeeping(self) -> dict:
|
|
68
|
-
result = dict()
|
|
69
|
-
result["timestamp"] = format_datetime()
|
|
70
|
-
|
|
71
|
-
for i in range(0, 200):
|
|
72
|
-
column_name = f'GSRON_EVISION_MASSREADING_{i}'
|
|
73
|
-
|
|
74
|
-
result[column_name] = self.dev.get_mass_reading()[i]
|
|
75
|
-
|
|
76
|
-
self.massreading_gauges[i].set(self.dev.get_mass_reading()[i])
|
|
77
|
-
|
|
78
|
-
return result
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
class EvisionProxy(Proxy, EvisionInterface):
|
|
82
|
-
|
|
83
|
-
def __init__(self):
|
|
84
|
-
super().__init__(
|
|
85
|
-
connect_address(
|
|
86
|
-
CTRL_SETTINGS.PROTOCOL, CTRL_SETTINGS.HOSTNAME, CTRL_SETTINGS.COMMANDING_PORT))
|