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
|
@@ -1,380 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from egse.decorators import dynamic_interface
|
|
4
|
-
from egse.device import DeviceInterface
|
|
5
|
-
from egse.powermeter.thorlabs.pm100a_devif import ThorlabsError
|
|
6
|
-
from egse.powermeter.thorlabs.pm100a_devif import ThorlabsPM100USBInterface
|
|
7
|
-
from egse.proxy import Proxy
|
|
8
|
-
from egse.randomwalk import RandomWalk
|
|
9
|
-
from egse.settings import Settings
|
|
10
|
-
from egse.zmq_ser import connect_address
|
|
11
|
-
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
CTRL_SETTINGS = Settings.load("Thorlabs PM100 Control Server")
|
|
15
|
-
DEVICE_SETTINGS = Settings.load(filename="pm100a.yaml")
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class ThorlabsPM100Interface(DeviceInterface):
|
|
19
|
-
"""
|
|
20
|
-
The Thorlabs PM100 base class.
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
@dynamic_interface
|
|
24
|
-
def info(self) -> str:
|
|
25
|
-
"""
|
|
26
|
-
Retrieve basic information about the Thorlabs controller.
|
|
27
|
-
|
|
28
|
-
Returns:
|
|
29
|
-
a multiline string with information about the device.
|
|
30
|
-
"""
|
|
31
|
-
return NotImplemented
|
|
32
|
-
|
|
33
|
-
@dynamic_interface
|
|
34
|
-
def get_value(self, *args, **kwargs):
|
|
35
|
-
"""
|
|
36
|
-
Send a command string to the device and wait for a response.
|
|
37
|
-
|
|
38
|
-
Returns:
|
|
39
|
-
a response from the device.
|
|
40
|
-
"""
|
|
41
|
-
return NotImplemented
|
|
42
|
-
|
|
43
|
-
@dynamic_interface
|
|
44
|
-
def get_id(self, *args, **kwargs):
|
|
45
|
-
"""
|
|
46
|
-
Send a command string to the device and wait for a response.
|
|
47
|
-
|
|
48
|
-
Returns:
|
|
49
|
-
a response from the device.
|
|
50
|
-
"""
|
|
51
|
-
return NotImplemented
|
|
52
|
-
|
|
53
|
-
@dynamic_interface
|
|
54
|
-
def get_wavelength(self, *args, **kwargs):
|
|
55
|
-
"""
|
|
56
|
-
Send a command string to the device and wait for a response.
|
|
57
|
-
|
|
58
|
-
Returns:
|
|
59
|
-
a response from the device.
|
|
60
|
-
"""
|
|
61
|
-
return NotImplemented
|
|
62
|
-
|
|
63
|
-
@dynamic_interface
|
|
64
|
-
def get_range(self, *args, **kwargs):
|
|
65
|
-
return NotImplemented
|
|
66
|
-
|
|
67
|
-
@dynamic_interface
|
|
68
|
-
def get_config(self, *args, **kwargs):
|
|
69
|
-
return NotImplemented
|
|
70
|
-
|
|
71
|
-
@dynamic_interface
|
|
72
|
-
def get_average(self, *args, **kwargs):
|
|
73
|
-
"""
|
|
74
|
-
Send a command string to the device and wait for a response.
|
|
75
|
-
|
|
76
|
-
Returns:
|
|
77
|
-
a response from the device.
|
|
78
|
-
"""
|
|
79
|
-
return NotImplemented
|
|
80
|
-
|
|
81
|
-
@dynamic_interface
|
|
82
|
-
def get_diameter(self, *args, **kwargs):
|
|
83
|
-
"""
|
|
84
|
-
Send a command string to the device and wait for a response.
|
|
85
|
-
|
|
86
|
-
Returns:
|
|
87
|
-
a response from the device.
|
|
88
|
-
"""
|
|
89
|
-
return NotImplemented
|
|
90
|
-
|
|
91
|
-
@dynamic_interface
|
|
92
|
-
def get_autozero(self, *args, **kwargs):
|
|
93
|
-
"""
|
|
94
|
-
Send a command string to the device and wait for a response.
|
|
95
|
-
|
|
96
|
-
Returns:
|
|
97
|
-
a response from the device.
|
|
98
|
-
"""
|
|
99
|
-
return NotImplemented
|
|
100
|
-
|
|
101
|
-
@dynamic_interface
|
|
102
|
-
def set_average(self, average):
|
|
103
|
-
"""
|
|
104
|
-
Send a command string to the device and wait for a response.
|
|
105
|
-
|
|
106
|
-
Returns:
|
|
107
|
-
a response from the device.
|
|
108
|
-
"""
|
|
109
|
-
return NotImplemented
|
|
110
|
-
|
|
111
|
-
@dynamic_interface
|
|
112
|
-
def set_wavelength(self, wave):
|
|
113
|
-
"""
|
|
114
|
-
Send a command string to the device and wait for a response.
|
|
115
|
-
|
|
116
|
-
Returns:
|
|
117
|
-
a response from the device.
|
|
118
|
-
"""
|
|
119
|
-
return NotImplemented
|
|
120
|
-
|
|
121
|
-
@dynamic_interface
|
|
122
|
-
def set_range(self, range, auto=False):
|
|
123
|
-
"""
|
|
124
|
-
Send a command string to the device and wait for a response.
|
|
125
|
-
|
|
126
|
-
Returns:
|
|
127
|
-
a response from the device.
|
|
128
|
-
"""
|
|
129
|
-
return NotImplemented
|
|
130
|
-
|
|
131
|
-
@dynamic_interface
|
|
132
|
-
def set_diameter(self, diameter):
|
|
133
|
-
"""
|
|
134
|
-
Send a command string to the device and wait for a response.
|
|
135
|
-
|
|
136
|
-
Returns:
|
|
137
|
-
a response from the device.
|
|
138
|
-
"""
|
|
139
|
-
return NotImplemented
|
|
140
|
-
|
|
141
|
-
@dynamic_interface
|
|
142
|
-
def set_zero(self, autozero):
|
|
143
|
-
"""
|
|
144
|
-
Send a command string to the device and wait for a response.
|
|
145
|
-
|
|
146
|
-
Returns:
|
|
147
|
-
a response from the device.
|
|
148
|
-
"""
|
|
149
|
-
return NotImplemented
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
class ThorlabsPM100Simulator(ThorlabsPM100Interface):
|
|
153
|
-
"""
|
|
154
|
-
The Thorlabs PM100 Simulator class.
|
|
155
|
-
"""
|
|
156
|
-
|
|
157
|
-
def __init__(self):
|
|
158
|
-
self._is_connected = True
|
|
159
|
-
self._value = 0.0
|
|
160
|
-
self._randomwalk = RandomWalk(start=20, boundary=(0.0, 100), scale=0.1, count=0)
|
|
161
|
-
self._wavelength = 535
|
|
162
|
-
self._range = {"range": 2, "auto": 0}
|
|
163
|
-
self._average = 1
|
|
164
|
-
self._diameter = 0.01
|
|
165
|
-
self._autozero = {"set": False, "magnitude (W)": 0.002}
|
|
166
|
-
|
|
167
|
-
def is_connected(self):
|
|
168
|
-
return self._is_connected
|
|
169
|
-
|
|
170
|
-
def is_simulator(self):
|
|
171
|
-
return True
|
|
172
|
-
|
|
173
|
-
def connect(self):
|
|
174
|
-
self._is_connected = True
|
|
175
|
-
|
|
176
|
-
def disconnect(self):
|
|
177
|
-
self._is_connected = False
|
|
178
|
-
|
|
179
|
-
def reconnect(self):
|
|
180
|
-
self.connect()
|
|
181
|
-
|
|
182
|
-
def info(self) -> str:
|
|
183
|
-
return "PM100a - The Thorlabs PM100A Simulator"
|
|
184
|
-
|
|
185
|
-
def get_value(self):
|
|
186
|
-
return next(self._randomwalk)
|
|
187
|
-
|
|
188
|
-
def get_average(self):
|
|
189
|
-
return self._average
|
|
190
|
-
|
|
191
|
-
def get_id(self) -> str:
|
|
192
|
-
return self.info()
|
|
193
|
-
|
|
194
|
-
def get_wavelength(self):
|
|
195
|
-
"returns default values"
|
|
196
|
-
return self._wavelength
|
|
197
|
-
|
|
198
|
-
def get_range(self):
|
|
199
|
-
"returns dummy range"
|
|
200
|
-
return self._range
|
|
201
|
-
|
|
202
|
-
def get_diameter(self):
|
|
203
|
-
return self._diameter
|
|
204
|
-
|
|
205
|
-
def get_autozero(self):
|
|
206
|
-
return self._autozero
|
|
207
|
-
|
|
208
|
-
def get_config(self):
|
|
209
|
-
"""Returns a dummy configuration."""
|
|
210
|
-
measurement = {"Value": self._value, "Average number": self._average}
|
|
211
|
-
return {
|
|
212
|
-
"Measurement": measurement,
|
|
213
|
-
"Correction Wavelength (nm)": self._wavelength,
|
|
214
|
-
"Beam diameter (mm)": self._diameter,
|
|
215
|
-
"Autozero correction": self._autozero,
|
|
216
|
-
"Power Range": self._range,
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
def set_wavelength(self, wave):
|
|
220
|
-
"returns default values"
|
|
221
|
-
self._wavelength = wave
|
|
222
|
-
return "wavelength set to: {self._wavelength}"
|
|
223
|
-
|
|
224
|
-
def set_range(self, range_action, auto=False):
|
|
225
|
-
# FIXME: the range_action parameter is not used in this method.
|
|
226
|
-
self._range["auto"] = auto
|
|
227
|
-
return self._range
|
|
228
|
-
|
|
229
|
-
def set_average(self, average):
|
|
230
|
-
self._average = average
|
|
231
|
-
|
|
232
|
-
def set_diameter(self, diameter):
|
|
233
|
-
self._diameter = diameter
|
|
234
|
-
|
|
235
|
-
def set_zero(self, autozero):
|
|
236
|
-
self._autozero["set"] = bool(autozero)
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
class ThorlabsPM100Controller(ThorlabsPM100Interface):
|
|
240
|
-
def __init__(self):
|
|
241
|
-
"""Initialize the ThorlabsPM100Controller interface."""
|
|
242
|
-
|
|
243
|
-
super().__init__()
|
|
244
|
-
|
|
245
|
-
logger.debug("Initializing ThorlabsPM100Controller")
|
|
246
|
-
|
|
247
|
-
try:
|
|
248
|
-
self.thorlabs = ThorlabsPM100USBInterface()
|
|
249
|
-
self.thorlabs.connect()
|
|
250
|
-
|
|
251
|
-
except ThorlabsError as exc:
|
|
252
|
-
logger.warning(f"ThorlabsError caught: Couldn't establish connection ({exc})")
|
|
253
|
-
raise ThorlabsError(
|
|
254
|
-
"Couldn't establish a connection with the Thorlabs PM100 USB controller."
|
|
255
|
-
) from exc
|
|
256
|
-
|
|
257
|
-
def connect(self):
|
|
258
|
-
"""Connects to the Thorlabs PM100 device."""
|
|
259
|
-
try:
|
|
260
|
-
self.thorlabs.connect()
|
|
261
|
-
except ThorlabsError as exc:
|
|
262
|
-
logger.warning(f"ThorlabsError caught: Couldn't establish connection ({exc})")
|
|
263
|
-
raise ConnectionError("Couldn't establish a connection with the Thorlabs PM100 USB controller.") from exc
|
|
264
|
-
|
|
265
|
-
def disconnect(self):
|
|
266
|
-
try:
|
|
267
|
-
self.thorlabs.disconnect()
|
|
268
|
-
except ThorlabsError as exc:
|
|
269
|
-
raise ConnectionError("Couldn't establish a connection with the Thorlabs PM100 USB controller.") from exc
|
|
270
|
-
|
|
271
|
-
def reconnect(self):
|
|
272
|
-
if self.is_connected():
|
|
273
|
-
self.disconnect()
|
|
274
|
-
self.connect()
|
|
275
|
-
|
|
276
|
-
def is_simulator(self):
|
|
277
|
-
return False
|
|
278
|
-
|
|
279
|
-
def is_connected(self):
|
|
280
|
-
"""Check if the Thorlabs Controller is connected."""
|
|
281
|
-
return self.thorlabs.is_connected()
|
|
282
|
-
|
|
283
|
-
def info(self) -> str:
|
|
284
|
-
return self.thorlabs.info()
|
|
285
|
-
|
|
286
|
-
def get_value(self) -> float:
|
|
287
|
-
return self.thorlabs.get_value()
|
|
288
|
-
|
|
289
|
-
def get_id(self):
|
|
290
|
-
return self.thorlabs.get_id()
|
|
291
|
-
|
|
292
|
-
def get_response(self, cmd_string):
|
|
293
|
-
response = self.thorlabs.get_response(cmd_string)
|
|
294
|
-
return response
|
|
295
|
-
|
|
296
|
-
def get_wavelength(self) -> int:
|
|
297
|
-
return self.thorlabs.get_wavelength()
|
|
298
|
-
|
|
299
|
-
def get_range(self) -> dict:
|
|
300
|
-
return self.thorlabs.get_range()
|
|
301
|
-
|
|
302
|
-
def get_average(self):
|
|
303
|
-
return self.thorlabs.get_average()
|
|
304
|
-
|
|
305
|
-
def get_diameter(self) -> float:
|
|
306
|
-
return self.thorlabs.get_diameter()
|
|
307
|
-
|
|
308
|
-
def get_autozero(self) -> dict:
|
|
309
|
-
return self.thorlabs.get_autozero()
|
|
310
|
-
|
|
311
|
-
def get_config(self) -> dict:
|
|
312
|
-
measurement = {
|
|
313
|
-
"Value": self.thorlabs.get_value(),
|
|
314
|
-
"Average number": self.thorlabs.get_average(),
|
|
315
|
-
}
|
|
316
|
-
wavelength = self.thorlabs.get_wavelength()
|
|
317
|
-
beam = self.thorlabs.get_diameter()
|
|
318
|
-
range = self.thorlabs.get_range()
|
|
319
|
-
autozero = self.thorlabs.get_autozero()
|
|
320
|
-
return {
|
|
321
|
-
"Measurement": measurement,
|
|
322
|
-
"Correction Wavelength (nm)": wavelength,
|
|
323
|
-
"Beam diameter (mm)": beam,
|
|
324
|
-
"Autozero correction": autozero,
|
|
325
|
-
"Power Range": range,
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
def set_wavelength(self, wave):
|
|
329
|
-
self.thorlabs.set_wavelength(wave)
|
|
330
|
-
|
|
331
|
-
def set_average(self, average):
|
|
332
|
-
self.thorlabs.set_average(average)
|
|
333
|
-
|
|
334
|
-
def set_range(self, range_action, auto=False):
|
|
335
|
-
old_range = self.thorlabs.get_range()
|
|
336
|
-
if auto:
|
|
337
|
-
self.thorlabs.autorange(int(auto))
|
|
338
|
-
if not auto:
|
|
339
|
-
if range_action == "up":
|
|
340
|
-
self.thorlabs.range(round(old_range["range"] * 10, 4))
|
|
341
|
-
elif range_action == "down":
|
|
342
|
-
self.thorlabs.range(round(old_range["range"] * 0.1, 4))
|
|
343
|
-
elif range_action is None:
|
|
344
|
-
# Allows to switch from Auto to Manual range without changing the range
|
|
345
|
-
pass
|
|
346
|
-
|
|
347
|
-
def set_diameter(self, diameter):
|
|
348
|
-
self.thorlabs.set_diameter(diameter)
|
|
349
|
-
|
|
350
|
-
def set_zero(self, autozero):
|
|
351
|
-
self.thorlabs.set_zero(autozero)
|
|
352
|
-
|
|
353
|
-
@property
|
|
354
|
-
def power_meter(self):
|
|
355
|
-
return self.thorlabs.power_meter
|
|
356
|
-
|
|
357
|
-
@property
|
|
358
|
-
def instrument(self):
|
|
359
|
-
return self.thorlabs.instrument
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
class ThorlabsPM100Proxy(Proxy, ThorlabsPM100Interface):
|
|
363
|
-
"""The ThorlabsPM100Proxy class is used to connect to the control server and send commands to
|
|
364
|
-
the Thorlabs device remotely."""
|
|
365
|
-
|
|
366
|
-
def __init__(
|
|
367
|
-
self,
|
|
368
|
-
protocol=CTRL_SETTINGS.PROTOCOL,
|
|
369
|
-
hostname=CTRL_SETTINGS.HOSTNAME,
|
|
370
|
-
port=CTRL_SETTINGS.COMMANDING_PORT,
|
|
371
|
-
):
|
|
372
|
-
"""
|
|
373
|
-
Args:
|
|
374
|
-
protocol: the transport protocol [default is taken from settings file]
|
|
375
|
-
hostname: location of the control server (IP address)
|
|
376
|
-
[default is taken from settings file]
|
|
377
|
-
port: TCP port on which the control server is listening for commands
|
|
378
|
-
[default is taken from settings file]
|
|
379
|
-
"""
|
|
380
|
-
super().__init__(connect_address(protocol, hostname, port))
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
BaseClass:
|
|
2
|
-
egse.powermeter.thorlabs.pm100a.ThorlabsPM100Interface
|
|
3
|
-
|
|
4
|
-
ProxyClass:
|
|
5
|
-
egse.powermeter.thorlabs.pm100a.ThorlabsPM100Proxy
|
|
6
|
-
|
|
7
|
-
ControlServerClass:
|
|
8
|
-
egse.powermeter.thorlabs.pm100a_cs.ThorlabsPM100ControlServer
|
|
9
|
-
|
|
10
|
-
ControlServer:
|
|
11
|
-
egse.powermeter.thorlabs.pm100a_cs
|
|
12
|
-
|
|
13
|
-
UserInterface:
|
|
14
|
-
egse.powermeter.thorlabs.pm100a_ui
|
|
15
|
-
|
|
16
|
-
Commands:
|
|
17
|
-
|
|
18
|
-
# Each of these groups is parsed and used on both the server and the client side.
|
|
19
|
-
# The group name (e.g. is_simulator) will be monkey patched in the Proxy class for the device or service.
|
|
20
|
-
# The other field are:
|
|
21
|
-
# description: Used by the doc_string method to generate a help string
|
|
22
|
-
# cmd: Command string that will eventually be send to the hardware controller for the
|
|
23
|
-
# device after the arguments have been filled.
|
|
24
|
-
# device_method: The name of the method to be called on the device class.
|
|
25
|
-
# These should all be defined by the base class for the device, i.e. LakeShoreBase.
|
|
26
|
-
# response: The name of the method to be called from the device protocol.
|
|
27
|
-
# This method should exist in the subclass of the CommandProtocol base class.
|
|
28
|
-
|
|
29
|
-
# Definition of the the DeviceInterface
|
|
30
|
-
|
|
31
|
-
is_connected:
|
|
32
|
-
description: Check if the Thorlabs Hardware Controller is connected.
|
|
33
|
-
|
|
34
|
-
disconnect:
|
|
35
|
-
description: Disconnect from the Thorlabs Powre Meter.
|
|
36
|
-
|
|
37
|
-
This command will be send to the Thorlabs Control Server which will then
|
|
38
|
-
disconnect from the hardware controller.
|
|
39
|
-
|
|
40
|
-
This command doesn't affect the ZeroMQ connection of this Proxy to the
|
|
41
|
-
control server. Use the service command ``disconnect()`` to disconnect
|
|
42
|
-
from the control server.
|
|
43
|
-
|
|
44
|
-
connect:
|
|
45
|
-
description: Connect to the Thorlabs Power Meter.
|
|
46
|
-
|
|
47
|
-
reconnect:
|
|
48
|
-
description: Reconnect to the Thorlabs Power Meter.
|
|
49
|
-
|
|
50
|
-
This command will force a disconnect and then try to re-connect to the controller.
|
|
51
|
-
|
|
52
|
-
is_simulator:
|
|
53
|
-
description: Ask if the control server is a simulator instead of the real ThorlabsPM100Controller class.
|
|
54
|
-
returns: bool | True if the far end is a simulator instead of the real hardware
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
# Definition of the device commands
|
|
58
|
-
|
|
59
|
-
info:
|
|
60
|
-
description: Retrieve basic information about the Thorlabs and the Controller.
|
|
61
|
-
|
|
62
|
-
get_value:
|
|
63
|
-
description: Retrieve the readout value from the Thorlabs power meter.
|
|
64
|
-
returns: float | The current readout for the given device
|
|
65
|
-
|
|
66
|
-
get_average:
|
|
67
|
-
description: Retrives the number of samples to average set in the Thorlabs power meter
|
|
68
|
-
returns: int | the number of samples
|
|
69
|
-
|
|
70
|
-
get_id:
|
|
71
|
-
description: Retrieve the rSCPI Identification for the Thorlabs power meter.
|
|
72
|
-
returns: str | The IDN for the given device
|
|
73
|
-
|
|
74
|
-
get_wavelength:
|
|
75
|
-
description: Retrieves the information of the configured wavelength in nm parameters for the Thorlabs power
|
|
76
|
-
meter
|
|
77
|
-
returns: int | The value of the correction wavelength set in nm
|
|
78
|
-
|
|
79
|
-
get_range:
|
|
80
|
-
description: Retrieves the upper power range of the Thorlabs Power meter
|
|
81
|
-
returns: float | to be changed into string or something range goes from 2.41 W to 2.41E-5 W also if the
|
|
82
|
-
device is set to autorange
|
|
83
|
-
|
|
84
|
-
get_diameter:
|
|
85
|
-
description: Retrieves the set beam parameter in mm of the Thorlabs Power meter
|
|
86
|
-
returns: float | beam diameter in mm
|
|
87
|
-
|
|
88
|
-
get_autozero:
|
|
89
|
-
description: Retrieves the autozero parameters of the Thorlabs Power meter
|
|
90
|
-
returns: dict | set = bool, magnitude (W) = float
|
|
91
|
-
|
|
92
|
-
get_config:
|
|
93
|
-
description: Retrieves the information of the parameters that have been set fot the Thorlabs power meter
|
|
94
|
-
(wavelength, and power range) together with a measured value
|
|
95
|
-
returns: dict | returns a dictionary containing the parameters
|
|
96
|
-
|
|
97
|
-
set_wavelength:
|
|
98
|
-
description: Sets the correction wavelength of the Thorlabs power meter
|
|
99
|
-
args:
|
|
100
|
-
wave: int | set the wavelength in nm # possible values to be implemented are 532, 535, 635, 760, 830, 900, 1060
|
|
101
|
-
cmd: "{wave}"
|
|
102
|
-
returns: None
|
|
103
|
-
|
|
104
|
-
set_range:
|
|
105
|
-
description: Sets the measurement range of the Thorlabs power meter
|
|
106
|
-
args:
|
|
107
|
-
range: str | "up" to increase the power range, "down" to decrease it
|
|
108
|
-
kwargs:
|
|
109
|
-
auto: bool | when True sets the Autorange ON
|
|
110
|
-
cmd: "{range} {auto}"
|
|
111
|
-
returns: None
|
|
112
|
-
|
|
113
|
-
set_average:
|
|
114
|
-
description: Sets the number of samples to average of the Thorlabs power meter
|
|
115
|
-
args:
|
|
116
|
-
average: int | number of samples (one sample takes 3ms)
|
|
117
|
-
cmd: "{average}"
|
|
118
|
-
returns: None
|
|
119
|
-
|
|
120
|
-
set_diameter:
|
|
121
|
-
description: Sets the incident beam diameter parameter of the Thorlabs power meter
|
|
122
|
-
args:
|
|
123
|
-
diameter: float | The beam diameter in mm. Values range from 0.1 to 9.4 mm
|
|
124
|
-
cmd: "{diameter}"
|
|
125
|
-
returns: None
|
|
126
|
-
|
|
127
|
-
set_zero:
|
|
128
|
-
description: Measures dark for zero adjustment of the Thorlabs power meter. The sensor needs to be covered
|
|
129
|
-
args:
|
|
130
|
-
autozero: bool | True = initiate autozero, False = abort autozero
|
|
131
|
-
cmd: "{autozero}"
|
|
132
|
-
returns: None
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import argparse
|
|
2
|
-
import click
|
|
3
|
-
import logging
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
import zmq
|
|
7
|
-
|
|
8
|
-
from egse.control import ControlServer
|
|
9
|
-
from egse.powermeter.thorlabs.pm100a import ThorlabsPM100Proxy
|
|
10
|
-
from egse.powermeter.thorlabs.pm100a_protocol import ThorlabsPM100Protocol
|
|
11
|
-
from egse.settings import Settings
|
|
12
|
-
from prometheus_client import start_http_server
|
|
13
|
-
|
|
14
|
-
logger = logging.getLogger(__name__)
|
|
15
|
-
|
|
16
|
-
# Restrict the logging output for the following loggers.
|
|
17
|
-
|
|
18
|
-
# Note that, in production, the logging level for the different loggers can be changed with a
|
|
19
|
-
# service command `set_logging_level(logger_name, level)`.
|
|
20
|
-
|
|
21
|
-
logger_levels = [
|
|
22
|
-
("egse.protocol", logging.INFO),
|
|
23
|
-
("egse.command", logging.INFO),
|
|
24
|
-
("egse.settings", logging.INFO),
|
|
25
|
-
]
|
|
26
|
-
|
|
27
|
-
for name, level in logger_levels:
|
|
28
|
-
logger = logging.getLogger(name)
|
|
29
|
-
logger.setLevel(level)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
CTRL_SETTINGS = Settings.load("Thorlabs PM100 Control Server")
|
|
33
|
-
|
|
34
|
-
class ThorlabsPM100ControlServer(ControlServer):
|
|
35
|
-
"""
|
|
36
|
-
ThorlabsControlServer - Command and monitor the Thorlabs Power Meter Controllers.
|
|
37
|
-
|
|
38
|
-
This class works as a command and monitoring server to control the Thorlabs Controller remotely.
|
|
39
|
-
|
|
40
|
-
The sever binds to the following ZeroMQ sockets:
|
|
41
|
-
|
|
42
|
-
* a REQ-REP socket that can be used as a command server. Any client can connect and
|
|
43
|
-
send a command to the Thorlabs controller.
|
|
44
|
-
|
|
45
|
-
* a PUB-SUP socket that serves as a monitoring server. It will send out Thorlabs status
|
|
46
|
-
information to all the connected clients every DELAY seconds.
|
|
47
|
-
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
def __init__(self):
|
|
51
|
-
super().__init__()
|
|
52
|
-
|
|
53
|
-
self.device_protocol = ThorlabsPM100Protocol(self)
|
|
54
|
-
|
|
55
|
-
self.logger.debug(f"Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}")
|
|
56
|
-
|
|
57
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
58
|
-
|
|
59
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
60
|
-
|
|
61
|
-
def get_communication_protocol(self):
|
|
62
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
63
|
-
|
|
64
|
-
def get_commanding_port(self):
|
|
65
|
-
return CTRL_SETTINGS.COMMANDING_PORT
|
|
66
|
-
|
|
67
|
-
def get_service_port(self):
|
|
68
|
-
return CTRL_SETTINGS.SERVICE_PORT
|
|
69
|
-
|
|
70
|
-
def get_monitoring_port(self):
|
|
71
|
-
return CTRL_SETTINGS.MONITORING_PORT
|
|
72
|
-
|
|
73
|
-
def get_storage_mnemonic(self):
|
|
74
|
-
try:
|
|
75
|
-
return CTRL_SETTINGS.STORAGE_MNEMONIC
|
|
76
|
-
except AttributeError:
|
|
77
|
-
return "PM100A"
|
|
78
|
-
|
|
79
|
-
def before_serve(self):
|
|
80
|
-
start_http_server(CTRL_SETTINGS.METRICS_PORT)
|
|
81
|
-
|
|
82
|
-
def after_serve(self):
|
|
83
|
-
self.device_protocol.synoptics.disconnect_cs()
|
|
84
|
-
|
|
85
|
-
@click.group()
|
|
86
|
-
def cli():
|
|
87
|
-
pass
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
@cli.command()
|
|
91
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the Thorlabs PM100 Powermeter Simulator as the backend.")
|
|
92
|
-
def start(simulator):
|
|
93
|
-
"""Start the Thorlabs PM100 Powermeter Control Server."""
|
|
94
|
-
|
|
95
|
-
if simulator:
|
|
96
|
-
|
|
97
|
-
Settings.set_simulation_mode(True)
|
|
98
|
-
|
|
99
|
-
try:
|
|
100
|
-
|
|
101
|
-
controller = ThorlabsPM100ControlServer()
|
|
102
|
-
controller.serve()
|
|
103
|
-
|
|
104
|
-
except KeyboardInterrupt:
|
|
105
|
-
|
|
106
|
-
print("Shutdown requested...exiting")
|
|
107
|
-
|
|
108
|
-
except SystemExit as exit_code:
|
|
109
|
-
|
|
110
|
-
print("System Exit with code {}.".format(exit_code))
|
|
111
|
-
sys.exit(exit_code)
|
|
112
|
-
|
|
113
|
-
except Exception:
|
|
114
|
-
|
|
115
|
-
logger.exception("Cannot start the Thorlabs PM100 Powermeter Control Server")
|
|
116
|
-
|
|
117
|
-
# The above line does exactly the same as the traceback, but on the logger
|
|
118
|
-
# import traceback
|
|
119
|
-
# traceback.print_exc(file=sys.stdout)
|
|
120
|
-
|
|
121
|
-
return 0
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
@cli.command()
|
|
125
|
-
def stop():
|
|
126
|
-
"""Send a 'quit_server' command to the Thorlabs PM100 Powermeter Control Server."""
|
|
127
|
-
|
|
128
|
-
with ThorlabsPM100Proxy() as proxy:
|
|
129
|
-
|
|
130
|
-
sp = proxy.get_service_proxy()
|
|
131
|
-
sp.quit_server()
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
if __name__ == "__main__":
|
|
135
|
-
|
|
136
|
-
sys.exit(cli())
|