cgse 2024.7.0__py3-none-any.whl → 2025.0.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +27 -0
- bump.py +85 -0
- cgse-2025.0.2.dist-info/METADATA +38 -0
- cgse-2025.0.2.dist-info/RECORD +5 -0
- {cgse-2024.7.0.dist-info → cgse-2025.0.2.dist-info}/WHEEL +1 -2
- cgse-2024.7.0.dist-info/COPYING +0 -674
- cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
- cgse-2024.7.0.dist-info/METADATA +0 -144
- cgse-2024.7.0.dist-info/RECORD +0 -660
- cgse-2024.7.0.dist-info/entry_points.txt +0 -75
- cgse-2024.7.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5238
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -627
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -903
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -233
- egse/alert/alertman_ui.py +0 -600
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -122
- egse/alert/gsm/beaglebone_protocol.py +0 -46
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -132
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1058
- egse/confman/confman.yaml +0 -70
- egse/confman/confman_cs.py +0 -240
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -632
- egse/coordinates/__init__.py +0 -534
- egse/coordinates/avoidance.py +0 -100
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -122
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -194
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1240
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -514
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2698
- egse/dpu/ccd_ui.py +0 -514
- egse/dpu/dpu.py +0 -783
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -671
- egse/dpu/fitsgen.py +0 -2096
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/__init__.py +0 -33
- egse/dsi/_libesl.py +0 -232
- egse/dsi/constants.py +0 -296
- egse/dsi/esl.py +0 -630
- egse/dsi/rmap.py +0 -444
- egse/dsi/rmapci.py +0 -39
- egse/dsi/spw.py +0 -335
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -318
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -26
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -37
- egse/fdir/fdir_manager_controller.py +0 -136
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -15
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -30
- egse/fdir/fdir_remote_controller.py +0 -30
- egse/fdir/fdir_remote_cs.py +0 -94
- egse/fdir/fdir_remote_interface.py +0 -9
- egse/fdir/fdir_remote_popup.py +0 -26
- egse/fee/__init__.py +0 -106
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/feesim.py +0 -914
- egse/fee/n_fee_hk.py +0 -768
- egse/fee/nfee.py +0 -188
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -49
- egse/filterwheel/eksma/fw8smc4.py +0 -657
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -82
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -115
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1065
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -710
- egse/fov/fov_ui.py +0 -859
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -138
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1285
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -587
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/styles.qss +0 -48
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -137
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -195
- egse/hexapod/symetrie/puna_protocol.py +0 -134
- egse/hexapod/symetrie/puna_ui.py +0 -433
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -414
- egse/hexapod/symetrie/zonda_protocol.py +0 -123
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -791
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -179
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -102
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -165
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -834
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -605
- egse/proxy.py +0 -531
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -693
- egse/resource.py +0 -333
- egse/rmap.py +0 -406
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -247
- egse/services.yaml +0 -68
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1181
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -71
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1401
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -245
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -188
- egse/stages/arun/smd3.py +0 -110
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -470
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -920
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -113
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1067
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -79
- egse/storage/storage_cs.py +0 -231
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -417
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1611
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -879
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -180
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -114
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
- egse/tempcontrol/beaglebone/beaglebone.py +0 -341
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -134
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
- egse/tempcontrol/digalox/digalox.py +0 -115
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -108
- egse/tempcontrol/digalox/digalox_protocol.py +0 -56
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -79
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -76
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -723
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -867
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -116
- egse/tempcontrol/srs/ptc10_protocol.py +0 -39
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -159
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -91
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -124
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -100
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -81
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -313
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -701
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -37
- egse/vacuum/pfeiffer/tc400.py +0 -87
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -136
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -35
- egse/vacuum/pfeiffer/tpg261.py +0 -80
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -59
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -52
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/check_tcs_calib_coef.py +0 -90
- scripts/correct_ccd_cold_temperature_cal.py +0 -157
- scripts/create_hdf5_report.py +0 -293
- scripts/csl_model.py +0 -420
- scripts/csl_restore_setup.py +0 -229
- scripts/export-grafana-dashboards.py +0 -49
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -10
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
- scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
- scripts/ias/correct_trp_swap_achel.py +0 -199
- scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
- scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/remove_lines_between_matches.py +0 -188
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
- scripts/sron/correct_trp_swap_brigand.py +0 -204
- scripts/sron/gimbal_conversions.py +0 -75
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
egse/vacuum/instrutech/igm402.py
DELETED
|
@@ -1,91 +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.setup import load_setup
|
|
11
|
-
from egse.system import format_datetime
|
|
12
|
-
from egse.vacuum.instrutech.igm402_controller import Igm402Controller
|
|
13
|
-
from egse.vacuum.instrutech.igm402_interface import Igm402Interface
|
|
14
|
-
from egse.vacuum.instrutech.igm402_simulator import Igm402Simulator
|
|
15
|
-
from egse.zmq_ser import bind_address
|
|
16
|
-
from egse.zmq_ser import connect_address
|
|
17
|
-
|
|
18
|
-
LOGGER = logging.getLogger(__name__)
|
|
19
|
-
|
|
20
|
-
CTRL_SETTINGS = Settings.load("InstruTech IGM402 Control Server")
|
|
21
|
-
DEVICE_SETTINGS = Settings.load(filename="igm402.yaml")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
gauge_ion_gauge_pressure = Gauge('GSRON_IGM402_IG_P', '')
|
|
25
|
-
gauge_cg_pressure_1 = Gauge('GSRON_IGM402_CG_P_1', '')
|
|
26
|
-
gauge_cg_pressure_2 = Gauge('GSRON_IGM402_CG_P_2', '')
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class Igm402Command(ClientServerCommand):
|
|
30
|
-
pass
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class Igm402Protocol(CommandProtocol):
|
|
34
|
-
|
|
35
|
-
def __init__(self, control_server: ControlServer):
|
|
36
|
-
|
|
37
|
-
super().__init__()
|
|
38
|
-
self.control_server = control_server
|
|
39
|
-
|
|
40
|
-
if Settings.simulation_mode():
|
|
41
|
-
self.dev = Igm402Simulator()
|
|
42
|
-
else:
|
|
43
|
-
self.dev = Igm402Controller()
|
|
44
|
-
|
|
45
|
-
self.load_commands(DEVICE_SETTINGS.Commands, Igm402Command, Igm402Interface)
|
|
46
|
-
self.build_device_method_lookup_table(self.dev)
|
|
47
|
-
|
|
48
|
-
# Get calibration from setup
|
|
49
|
-
self.setup = load_setup()
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
# move to parent class?
|
|
53
|
-
def get_bind_address(self):
|
|
54
|
-
return bind_address(
|
|
55
|
-
self.control_server.get_communication_protocol(),
|
|
56
|
-
self.control_server.get_commanding_port(),
|
|
57
|
-
)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
def get_status(self):
|
|
61
|
-
status_dict = super().get_status()
|
|
62
|
-
|
|
63
|
-
return status_dict
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
def get_housekeeping(self) -> dict:
|
|
67
|
-
result = dict()
|
|
68
|
-
result["timestamp"] = format_datetime()
|
|
69
|
-
result["GSRON_IGM402_IG_P"] = self.dev.get_ion_gauge_pressure()
|
|
70
|
-
result["GSRON_IGM402_CG_P_1"] = self.dev.get_cgn_pressure(1)
|
|
71
|
-
result["GSRON_IGM402_CG_P_2"] = self.dev.get_cgn_pressure(2)
|
|
72
|
-
|
|
73
|
-
gauge_ion_gauge_pressure.set(result["GSRON_IGM402_IG_P"])
|
|
74
|
-
gauge_cg_pressure_1.set(result["GSRON_IGM402_CG_P_1"])
|
|
75
|
-
gauge_cg_pressure_2.set(result["GSRON_IGM402_CG_P_2"])
|
|
76
|
-
|
|
77
|
-
# Select the IG current based on the pressure
|
|
78
|
-
if result["GSRON_IGM402_IG_P"] < self.setup.gse.igm402.calibration.enable_4ma_pressure:
|
|
79
|
-
self.dev.set_emission_current(1) # Set to 4ma.
|
|
80
|
-
else:
|
|
81
|
-
self.dev.set_emission_current(0) # Set to 100uA.
|
|
82
|
-
|
|
83
|
-
return result
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
class Igm402Proxy(Proxy, Igm402Interface):
|
|
87
|
-
|
|
88
|
-
def __init__(self):
|
|
89
|
-
super().__init__(
|
|
90
|
-
connect_address(
|
|
91
|
-
CTRL_SETTINGS.PROTOCOL, CTRL_SETTINGS.HOSTNAME, CTRL_SETTINGS.COMMANDING_PORT))
|
|
@@ -1,90 +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.instrutech.igm402_interface.Igm402Interface
|
|
8
|
-
|
|
9
|
-
ProxyClass:
|
|
10
|
-
egse.vacuum.instrutech.igm402.Igm402Proxy
|
|
11
|
-
|
|
12
|
-
ControlServer:
|
|
13
|
-
egse.vacuum.instrutech.igm402_cs
|
|
14
|
-
|
|
15
|
-
Commands:
|
|
16
|
-
|
|
17
|
-
disconnect:
|
|
18
|
-
description: Disconnect from the device.
|
|
19
|
-
|
|
20
|
-
connect:
|
|
21
|
-
description: Connect to the device.
|
|
22
|
-
|
|
23
|
-
reconnect:
|
|
24
|
-
description: Reconnect to the device.
|
|
25
|
-
This command will force a disconnect and then try to re-connect to the controller.
|
|
26
|
-
is_connected:
|
|
27
|
-
description: Check if the Thorlabs Hardware Controller is connected.
|
|
28
|
-
|
|
29
|
-
is_simulator:
|
|
30
|
-
description: Ask if the control server is a simulator instead of the real controller class.
|
|
31
|
-
returns: bool | True if the far end is a simulator instead of the real hardware
|
|
32
|
-
|
|
33
|
-
get_idn:
|
|
34
|
-
description: Get device firmware version.
|
|
35
|
-
returns: str | version number
|
|
36
|
-
|
|
37
|
-
get_status:
|
|
38
|
-
description: Get the device status string.
|
|
39
|
-
returns: str | status string
|
|
40
|
-
|
|
41
|
-
get_system_pressure:
|
|
42
|
-
description: Read IG and CG pressures combined (single value?).
|
|
43
|
-
returns: str | String reply containing the pressure in Torr
|
|
44
|
-
|
|
45
|
-
get_ion_gauge_pressure:
|
|
46
|
-
description: Read IG pressure.
|
|
47
|
-
returns: str | String reply containing the pressure in Torr
|
|
48
|
-
|
|
49
|
-
get_cgn_pressure:
|
|
50
|
-
description: Read CG pressures.
|
|
51
|
-
args:
|
|
52
|
-
index: int | device index [1, 2]
|
|
53
|
-
cmd: "{index}"
|
|
54
|
-
returns: str | String reply containing the pressure in Torr
|
|
55
|
-
|
|
56
|
-
set_filament_enable:
|
|
57
|
-
description: Power up/down the filament and start/stop reading pressure.
|
|
58
|
-
args:
|
|
59
|
-
enable: bool | True = enable
|
|
60
|
-
cmd: "{enable}"
|
|
61
|
-
|
|
62
|
-
set_enable_degas:
|
|
63
|
-
description: Start/stop a degas cycle.
|
|
64
|
-
args:
|
|
65
|
-
enable: bool | True = enable
|
|
66
|
-
cmd: "{enable}"
|
|
67
|
-
|
|
68
|
-
set_emission_current:
|
|
69
|
-
description: Set the emission current to 4mA or 100uA.
|
|
70
|
-
args:
|
|
71
|
-
current: int | 4mA = 1, 100uA = 0
|
|
72
|
-
cmd: "{current}"
|
|
73
|
-
|
|
74
|
-
set_filament:
|
|
75
|
-
description: Select filament 1 or 2.
|
|
76
|
-
args:
|
|
77
|
-
type: int | 1 = F1, 2 = F2
|
|
78
|
-
cmd: "{type}"
|
|
79
|
-
|
|
80
|
-
set_trip_point_i_low:
|
|
81
|
-
description: Turn on the IG filament below this pressure.
|
|
82
|
-
args:
|
|
83
|
-
pressure: int | threshold pressure
|
|
84
|
-
cmd: "{pressure}"
|
|
85
|
-
|
|
86
|
-
set_trip_point_i_high:
|
|
87
|
-
description: Turn off the IG filament above this pressure.
|
|
88
|
-
args:
|
|
89
|
-
pressure: int | threshold pressure
|
|
90
|
-
cmd: "{pressure}"
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
import time
|
|
4
|
-
|
|
5
|
-
from egse.serialdevice import SerialDevice
|
|
6
|
-
from egse.settings import Settings
|
|
7
|
-
from egse.setup import load_setup
|
|
8
|
-
from egse.vacuum.instrutech.igm402_interface import Igm402Interface
|
|
9
|
-
|
|
10
|
-
logger = logging.getLogger(__name__)
|
|
11
|
-
|
|
12
|
-
# Load the device settings from the global common-egse config file
|
|
13
|
-
DEVICE_SETTINGS = Settings.load("InstruTech IGM402 Controller")
|
|
14
|
-
|
|
15
|
-
# Load the device protocol
|
|
16
|
-
DEVICE_PROTOCOL = Settings.load(filename='igm402.yaml')['Commands']
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class Igm402Controller(SerialDevice, Igm402Interface):
|
|
20
|
-
|
|
21
|
-
def __init__(self, port=None, baudrate=None, address=None):
|
|
22
|
-
|
|
23
|
-
# Load device configuration from the common-egse global config file
|
|
24
|
-
self._port = DEVICE_SETTINGS.PORT if port is None else port
|
|
25
|
-
self._baudrate = DEVICE_SETTINGS.BAUDRATE if baudrate is None else baudrate
|
|
26
|
-
self._address = DEVICE_SETTINGS.ADDRESS if address is None else address
|
|
27
|
-
|
|
28
|
-
# Get calibration from setup
|
|
29
|
-
setup = load_setup()
|
|
30
|
-
|
|
31
|
-
# Initialize the parent class with the port and baudrate
|
|
32
|
-
super().__init__(port=self._port, baudrate=self._baudrate)
|
|
33
|
-
self.connect()
|
|
34
|
-
|
|
35
|
-
# Set the temperature points at which the IG filament is dis-/enabled.
|
|
36
|
-
self.set_trip_point_i_low(0.9 * setup.gse.igm402.calibration.enable_filament_pressure)
|
|
37
|
-
time.sleep(0.1)
|
|
38
|
-
self.set_trip_point_i_high(setup.gse.igm402.calibration.enable_filament_pressure)
|
|
39
|
-
time.sleep(0.1)
|
|
40
|
-
|
|
41
|
-
def get_idn(self):
|
|
42
|
-
cmd = f"#{self._address:02d}VER\r"
|
|
43
|
-
return self.query(cmd)
|
|
44
|
-
|
|
45
|
-
def reset(self):
|
|
46
|
-
cmd = f"#{self._address:02d}RST\r"
|
|
47
|
-
self.send_command(cmd)
|
|
48
|
-
|
|
49
|
-
def get_status(self):
|
|
50
|
-
cmd = f"#{self._address:02d}RS\r"
|
|
51
|
-
return self.query(cmd)
|
|
52
|
-
|
|
53
|
-
def get_system_pressure(self):
|
|
54
|
-
cmd = f"#{self._address:02d}RDS\r"
|
|
55
|
-
return self.query(cmd)
|
|
56
|
-
|
|
57
|
-
def get_ion_gauge_pressure(self):
|
|
58
|
-
cmd = f"#{self._address:02d}RD\r"
|
|
59
|
-
raw_value = self.query(cmd)
|
|
60
|
-
return float(raw_value.rstrip('\x00')) # only when the pressure is zero, the device appends a null character
|
|
61
|
-
|
|
62
|
-
def get_cgn_pressure(self, index):
|
|
63
|
-
assert index in [1, 2], 'index must be either 1 or 2'
|
|
64
|
-
cmd = f"#{self._address:02d}RDCG{index:d}\r"
|
|
65
|
-
raw_value = self.query(cmd)
|
|
66
|
-
return float(raw_value.rstrip('\x00')) # only when the pressure is zero, the device appends a null character
|
|
67
|
-
|
|
68
|
-
def set_filament_enable(self, enable):
|
|
69
|
-
cmd = f"#{self._address:02d}IG{int(enable):1d}\r"
|
|
70
|
-
return self.query(cmd)
|
|
71
|
-
|
|
72
|
-
def set_enable_degas(self, enable):
|
|
73
|
-
cmd = f"#{self._address:02d}DG{int(enable):1d}\r"
|
|
74
|
-
return self.query(cmd)
|
|
75
|
-
|
|
76
|
-
def set_emission_current(self, current):
|
|
77
|
-
assert current in [0, 1], 'current selector must be either 0 or 1'
|
|
78
|
-
cmd = f"#{self._address:02d}SE{current:1d}\r"
|
|
79
|
-
return self.query(cmd)
|
|
80
|
-
|
|
81
|
-
def set_filament(self, type):
|
|
82
|
-
assert type in [1, 2], 'type must be either 1 or 2'
|
|
83
|
-
cmd = f"#{self._address:02d}SF{type:1d}\r"
|
|
84
|
-
return self.query(cmd)
|
|
85
|
-
|
|
86
|
-
def set_trip_point_i_low(self, pressure):
|
|
87
|
-
cmd = f"#{self._address:02d}SL+{pressure:.2E}\r"
|
|
88
|
-
return self.query(cmd)
|
|
89
|
-
|
|
90
|
-
def set_trip_point_i_high(self, pressure):
|
|
91
|
-
cmd = f"#{self._address:02d}SL-{pressure:.2E}\r"
|
|
92
|
-
return self.query(cmd)
|
|
93
|
-
|
|
94
|
-
def query(self, command: str):
|
|
95
|
-
""" Override the parent class to do some error checking on the response. """
|
|
96
|
-
|
|
97
|
-
response = super().query(command)
|
|
98
|
-
|
|
99
|
-
if len(response) == 0:
|
|
100
|
-
return "0"
|
|
101
|
-
raise ConnectionError(f"No reply from device")
|
|
102
|
-
elif response[-1] != '\r':
|
|
103
|
-
return "0"
|
|
104
|
-
raise ConnectionError(f"Invalid termination character in response: {response}")
|
|
105
|
-
elif response[0] != '*':
|
|
106
|
-
return "0"
|
|
107
|
-
raise ConnectionError(f"Invalid header character in response: {response}")
|
|
108
|
-
elif response[0] == '?':
|
|
109
|
-
return "0"
|
|
110
|
-
raise ConnectionError(f"Got an error response from device: {response[4:-1]}")
|
|
111
|
-
|
|
112
|
-
return response[4:-1]
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
def main():
|
|
116
|
-
dev = Igm402Controller()
|
|
117
|
-
print(dev.get_idn())
|
|
118
|
-
print(dev.get_ion_gauge_pressure())
|
|
119
|
-
print(dev.get_cgn_pressure(1))
|
|
120
|
-
print(dev.get_cgn_pressure(2))
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
if __name__ == '__main__':
|
|
124
|
-
main()
|
|
@@ -1,108 +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.instrutech.igm402 import Igm402Protocol, Igm402Proxy
|
|
11
|
-
|
|
12
|
-
logging.basicConfig(level=logging.DEBUG, format=Settings.LOG_FORMAT_FULL)
|
|
13
|
-
|
|
14
|
-
logger = logging.getLogger(__name__)
|
|
15
|
-
|
|
16
|
-
CTRL_SETTINGS = Settings.load("InstruTech IGM402 Control Server")
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
class Igm402ControlServer(ControlServer):
|
|
20
|
-
"""
|
|
21
|
-
Igm402ControlServer - Command and monitor the Igm402 pressure sensor.
|
|
22
|
-
This class works as a command and monitoring server to control the device remotely.
|
|
23
|
-
The sever binds to the following ZeroMQ sockets:
|
|
24
|
-
* a REP socket that can be used as a command server. Any client can connect and
|
|
25
|
-
send a command to the Lamp controller.
|
|
26
|
-
* a PUB socket that serves as a monitoring server. It will send out Lamp status
|
|
27
|
-
information to all the connected clients every DELAY seconds.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
def __init__(self):
|
|
31
|
-
super().__init__()
|
|
32
|
-
|
|
33
|
-
self.device_protocol = Igm402Protocol(self)
|
|
34
|
-
|
|
35
|
-
self.logger.debug(f"Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}")
|
|
36
|
-
|
|
37
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
38
|
-
|
|
39
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
40
|
-
|
|
41
|
-
def get_communication_protocol(self):
|
|
42
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
43
|
-
|
|
44
|
-
def get_commanding_port(self):
|
|
45
|
-
return CTRL_SETTINGS.COMMANDING_PORT
|
|
46
|
-
|
|
47
|
-
def get_service_port(self):
|
|
48
|
-
return CTRL_SETTINGS.SERVICE_PORT
|
|
49
|
-
|
|
50
|
-
def get_monitoring_port(self):
|
|
51
|
-
return CTRL_SETTINGS.MONITORING_PORT
|
|
52
|
-
|
|
53
|
-
def get_storage_mnemonic(self):
|
|
54
|
-
try:
|
|
55
|
-
return CTRL_SETTINGS.STORAGE_MNEMONIC
|
|
56
|
-
except AttributeError:
|
|
57
|
-
return "IGM402"
|
|
58
|
-
|
|
59
|
-
def before_serve(self):
|
|
60
|
-
start_http_server(CTRL_SETTINGS.METRICS_PORT)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
@click.group()
|
|
64
|
-
def cli():
|
|
65
|
-
pass
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
@cli.command()
|
|
69
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the IGM402 Simulator as the backend.")
|
|
70
|
-
def start(simulator):
|
|
71
|
-
"""Start the IGM402 Control Server."""
|
|
72
|
-
|
|
73
|
-
if simulator:
|
|
74
|
-
Settings.set_simulation_mode(True)
|
|
75
|
-
try:
|
|
76
|
-
controller = Igm402ControlServer()
|
|
77
|
-
controller.serve()
|
|
78
|
-
|
|
79
|
-
except KeyboardInterrupt:
|
|
80
|
-
print("Shutdown requested...exiting")
|
|
81
|
-
|
|
82
|
-
except SystemExit as exit_code:
|
|
83
|
-
print("System Exit with code {}.".format(exit_code))
|
|
84
|
-
sys.exit(exit_code)
|
|
85
|
-
|
|
86
|
-
except Exception:
|
|
87
|
-
|
|
88
|
-
logger.exception("Cannot start the IGM402 Control Server")
|
|
89
|
-
# The above line does exactly the same as the traceback, but on the logger
|
|
90
|
-
# import traceback
|
|
91
|
-
# traceback.print_exc(file=sys.stdout)
|
|
92
|
-
|
|
93
|
-
return 0
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
@cli.command()
|
|
97
|
-
def stop():
|
|
98
|
-
"""Send a 'quit_server' command to the Control Server."""
|
|
99
|
-
|
|
100
|
-
with Igm402Proxy() as proxy:
|
|
101
|
-
|
|
102
|
-
sp = proxy.get_service_proxy()
|
|
103
|
-
sp.quit_server()
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if __name__ == "__main__":
|
|
107
|
-
|
|
108
|
-
sys.exit(cli())
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
from egse.device import DeviceInterface
|
|
2
|
-
from egse.decorators import dynamic_interface
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class Igm402Interface(DeviceInterface):
|
|
6
|
-
|
|
7
|
-
@dynamic_interface
|
|
8
|
-
def get_idn(self):
|
|
9
|
-
return NotImplemented
|
|
10
|
-
|
|
11
|
-
@dynamic_interface
|
|
12
|
-
def get_status(self):
|
|
13
|
-
return NotImplemented
|
|
14
|
-
|
|
15
|
-
@dynamic_interface
|
|
16
|
-
def get_system_pressure(self):
|
|
17
|
-
return NotImplemented
|
|
18
|
-
|
|
19
|
-
@dynamic_interface
|
|
20
|
-
def get_ion_gauge_pressure(self):
|
|
21
|
-
return NotImplemented
|
|
22
|
-
|
|
23
|
-
@dynamic_interface
|
|
24
|
-
def get_cgn_pressure(self, index):
|
|
25
|
-
return NotImplemented
|
|
26
|
-
|
|
27
|
-
@dynamic_interface
|
|
28
|
-
def set_filament_enable(self, enable):
|
|
29
|
-
return NotImplemented
|
|
30
|
-
|
|
31
|
-
@dynamic_interface
|
|
32
|
-
def set_enable_degas(self, enable):
|
|
33
|
-
return NotImplemented
|
|
34
|
-
|
|
35
|
-
@dynamic_interface
|
|
36
|
-
def set_emission_current(self, current):
|
|
37
|
-
return NotImplemented
|
|
38
|
-
|
|
39
|
-
@dynamic_interface
|
|
40
|
-
def set_filament(self, type):
|
|
41
|
-
return NotImplemented
|
|
42
|
-
|
|
43
|
-
@dynamic_interface
|
|
44
|
-
def set_trip_point_i_low(self, pressure):
|
|
45
|
-
return NotImplemented
|
|
46
|
-
|
|
47
|
-
@dynamic_interface
|
|
48
|
-
def set_trip_point_i_high(self, pressure):
|
|
49
|
-
return NotImplemented
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from egse.simulator import Simulator
|
|
2
|
-
from egse.vacuum.instrutech.igm402_interface import Igm402Interface
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
class Igm402Simulator(Igm402Interface, Simulator):
|
|
6
|
-
|
|
7
|
-
def __init__(self):
|
|
8
|
-
super().__init__()
|
|
9
|
-
|
|
10
|
-
def is_simulator(self):
|
|
11
|
-
return True
|
|
12
|
-
|
|
13
|
-
def get_idn(self):
|
|
14
|
-
return NotImplemented
|
|
15
|
-
|
|
16
|
-
def get_status(self):
|
|
17
|
-
return NotImplemented
|
|
18
|
-
|
|
19
|
-
def get_ion_gauge_pressure(self):
|
|
20
|
-
return 0.0
|
|
21
|
-
|
|
22
|
-
def get_cgn_pressure(self, index):
|
|
23
|
-
assert index in [1, 2], 'index must be either 1 or 2'
|
|
24
|
-
return 0.0
|
|
25
|
-
|
|
26
|
-
def set_filament_enable(self, enable):
|
|
27
|
-
return NotImplemented
|
|
28
|
-
|
|
29
|
-
def set_enable_degas(self, enable):
|
|
30
|
-
return NotImplemented
|
|
31
|
-
|
|
32
|
-
def set_emission_current(self, current):
|
|
33
|
-
return NotImplemented
|
|
34
|
-
|
|
35
|
-
def set_filament(self, type):
|
|
36
|
-
return NotImplemented
|