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
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
A Graphical User Interface for monitoring and commanding the Symétrie Gimbal.
|
|
3
|
-
|
|
4
|
-
Start the GUI from your terminal as follows:
|
|
5
|
-
|
|
6
|
-
gimbal_ui [--type proxy|direct|simulator]
|
|
7
|
-
|
|
8
|
-
This GUI is based on the SYM_positioning application from Symétrie. The intent
|
|
9
|
-
is to provide operators a user interface which is platform independent, but
|
|
10
|
-
familiar.
|
|
11
|
-
|
|
12
|
-
The application is completely written in Python/Qt5 and can therefore run on any
|
|
13
|
-
platform that supports Python and Qt5.
|
|
14
|
-
|
|
15
|
-
"""
|
|
16
|
-
import argparse
|
|
17
|
-
import logging
|
|
18
|
-
import multiprocessing
|
|
19
|
-
import threading
|
|
20
|
-
from pathlib import Path
|
|
21
|
-
|
|
22
|
-
import sys
|
|
23
|
-
from PyQt5.QtCore import QLockFile
|
|
24
|
-
|
|
25
|
-
multiprocessing.current_process().name = "gimbal_ui"
|
|
26
|
-
|
|
27
|
-
from PyQt5.QtGui import QIcon
|
|
28
|
-
from PyQt5.QtWidgets import QApplication, QMessageBox
|
|
29
|
-
from PyQt5.QtWidgets import QFrame
|
|
30
|
-
from PyQt5.QtWidgets import QHBoxLayout
|
|
31
|
-
from PyQt5.QtWidgets import QVBoxLayout
|
|
32
|
-
from prometheus_client import start_http_server
|
|
33
|
-
|
|
34
|
-
from egse.gui import show_warning_message
|
|
35
|
-
from egse.gui.led import Indic
|
|
36
|
-
from egse.gui.states import States
|
|
37
|
-
from egse.gimbal.symetrie.generic_gimbal_ui import ActuatorStates
|
|
38
|
-
from egse.gimbal.symetrie.generic_gimbal_ui import GimbalUIController
|
|
39
|
-
from egse.gimbal.symetrie.generic_gimbal_ui import GimbalUIModel
|
|
40
|
-
from egse.gimbal.symetrie.generic_gimbal_ui import GimbalUIView
|
|
41
|
-
from egse.gimbal.symetrie.gimbal import GimbalController
|
|
42
|
-
from egse.gimbal.symetrie.gimbal import GimbalProxy
|
|
43
|
-
from egse.gimbal.symetrie.gimbal import GimbalSimulator
|
|
44
|
-
from egse.process import ProcessStatus
|
|
45
|
-
from egse.resource import get_resource
|
|
46
|
-
from egse.settings import Settings
|
|
47
|
-
from egse.system import do_every
|
|
48
|
-
|
|
49
|
-
MODULE_LOGGER = logging.getLogger(__name__)
|
|
50
|
-
|
|
51
|
-
# Status LEDs define the number of status leds (length of the list), the description and the
|
|
52
|
-
# default color when the LED is on.
|
|
53
|
-
|
|
54
|
-
STATUS_LEDS = [
|
|
55
|
-
["Error", Indic.RED], # bit 0
|
|
56
|
-
["System Initialized", Indic.GREEN], # bit 1
|
|
57
|
-
["In position", Indic.GREEN], # bit 2
|
|
58
|
-
["Amplifier enabled", Indic.GREEN], # bit 3
|
|
59
|
-
["Homing done", Indic.GREEN], # bit 4
|
|
60
|
-
["Brake on", Indic.GREEN], # bit 5
|
|
61
|
-
["Emergency stop", Indic.ORANGE], # bit 6
|
|
62
|
-
["Warning FE", Indic.ORANGE], # bit 7
|
|
63
|
-
["Fatal FE", Indic.RED], # bit 8
|
|
64
|
-
["Actuator Limit Error", Indic.RED], # bit 9
|
|
65
|
-
["Amplifier Error", Indic.RED], # bit 10
|
|
66
|
-
["Encoder error", Indic.RED], # bit 11
|
|
67
|
-
["Phasing error", Indic.RED], # bit 12
|
|
68
|
-
["Homing error", Indic.RED], # bit 13
|
|
69
|
-
["Kinematic error", Indic.RED], # bit 14
|
|
70
|
-
["Abort input error", Indic.RED], # bit 15
|
|
71
|
-
["R/W memory error", Indic.RED], # bit 16
|
|
72
|
-
["Temperature error", Indic.RED], # bit 17
|
|
73
|
-
["Homing done (virtual)", Indic.ORANGE], # bit 18
|
|
74
|
-
["Encoders power off", Indic.ORANGE], # bit 19
|
|
75
|
-
["Limit switches power off", Indic.ORANGE], # bit 20
|
|
76
|
-
["Reserved", Indic.BLACK], # bit 21
|
|
77
|
-
["Reserved", Indic.BLACK], # bit 22
|
|
78
|
-
["Reserved", Indic.BLACK], # bit 23
|
|
79
|
-
]
|
|
80
|
-
|
|
81
|
-
# The index of the Control LED
|
|
82
|
-
|
|
83
|
-
CONTROL_ONOFF = 3
|
|
84
|
-
|
|
85
|
-
ACTUATOR_STATE_LABELS = [
|
|
86
|
-
"In position",
|
|
87
|
-
"Control loop on servo motors active",
|
|
88
|
-
"Homing done",
|
|
89
|
-
"Input “Home switch”",
|
|
90
|
-
"Input “Positive limit switch”",
|
|
91
|
-
"Input “Negative limit switch”",
|
|
92
|
-
"Brake control output",
|
|
93
|
-
"Following error (warning)",
|
|
94
|
-
"Following error",
|
|
95
|
-
"Actuator out of bounds error",
|
|
96
|
-
"Amplifier error",
|
|
97
|
-
"Encoder error",
|
|
98
|
-
"Phasing error (brushless engine only)",
|
|
99
|
-
]
|
|
100
|
-
|
|
101
|
-
GUI_SETTINGS = Settings.load("GIMBAL GUI")
|
|
102
|
-
|
|
103
|
-
class GimbalUIView(GimbalUIView):
|
|
104
|
-
def __init__(self):
|
|
105
|
-
super().__init__()
|
|
106
|
-
|
|
107
|
-
self.setWindowTitle("Gimbal Controller")
|
|
108
|
-
|
|
109
|
-
self.actuator_states = ActuatorStates(labels=ACTUATOR_STATE_LABELS)
|
|
110
|
-
|
|
111
|
-
self.init_gui()
|
|
112
|
-
|
|
113
|
-
def init_gui(self):
|
|
114
|
-
|
|
115
|
-
# The main frame in which all the other frames are located, the outer Application frame
|
|
116
|
-
|
|
117
|
-
app_frame = QFrame()
|
|
118
|
-
app_frame.setObjectName("AppFrame")
|
|
119
|
-
|
|
120
|
-
# The left part which shows the states and positions
|
|
121
|
-
|
|
122
|
-
status_frame = QFrame()
|
|
123
|
-
status_frame.setObjectName("StatusFrame")
|
|
124
|
-
|
|
125
|
-
# The right part which has tabs that allow settings, movements, maintenance etc.
|
|
126
|
-
|
|
127
|
-
tabs_frame = QFrame()
|
|
128
|
-
tabs_frame.setObjectName("TabsFrame")
|
|
129
|
-
|
|
130
|
-
# The states of the Gimbal (contains all the leds)
|
|
131
|
-
|
|
132
|
-
states_frame = QFrame()
|
|
133
|
-
states_frame.setObjectName("StatesFrame")
|
|
134
|
-
|
|
135
|
-
# The user, machine positions and actuator lengths
|
|
136
|
-
|
|
137
|
-
positions_frame = QFrame()
|
|
138
|
-
positions_frame.setObjectName("PositionsFrame")
|
|
139
|
-
|
|
140
|
-
hbox = QHBoxLayout()
|
|
141
|
-
vbox_left = QVBoxLayout()
|
|
142
|
-
vbox_right = QVBoxLayout()
|
|
143
|
-
|
|
144
|
-
self.createToolbar()
|
|
145
|
-
self.createStatusBar()
|
|
146
|
-
|
|
147
|
-
self.states = States(STATUS_LEDS)
|
|
148
|
-
|
|
149
|
-
user_positions_widget = self.createUserPositionWidget()
|
|
150
|
-
mach_positions_widget = self.createMachinePositionWidget()
|
|
151
|
-
actuator_length_widget = self.createActuatorLengthWidget()
|
|
152
|
-
motor_temp_widget = self.createMotorTemperatureWidget()
|
|
153
|
-
|
|
154
|
-
vbox_right.addWidget(user_positions_widget)
|
|
155
|
-
vbox_right.addWidget(mach_positions_widget)
|
|
156
|
-
vbox_right.addWidget(actuator_length_widget)
|
|
157
|
-
vbox_right.addWidget(motor_temp_widget)
|
|
158
|
-
|
|
159
|
-
positions_frame.setLayout(vbox_right)
|
|
160
|
-
|
|
161
|
-
vbox_left.addWidget(self.states)
|
|
162
|
-
|
|
163
|
-
states_frame.setLayout(vbox_left)
|
|
164
|
-
|
|
165
|
-
hbox.addWidget(states_frame)
|
|
166
|
-
hbox.addWidget(positions_frame)
|
|
167
|
-
|
|
168
|
-
status_frame.setLayout(hbox)
|
|
169
|
-
|
|
170
|
-
tabbed_widget = self.create_tabbed_widget()
|
|
171
|
-
|
|
172
|
-
hbox = QHBoxLayout()
|
|
173
|
-
hbox.addWidget(tabbed_widget)
|
|
174
|
-
tabs_frame.setLayout(hbox)
|
|
175
|
-
|
|
176
|
-
hbox = QHBoxLayout()
|
|
177
|
-
hbox.addWidget(status_frame)
|
|
178
|
-
hbox.addWidget(tabs_frame)
|
|
179
|
-
|
|
180
|
-
app_frame.setLayout(hbox)
|
|
181
|
-
|
|
182
|
-
self.setCentralWidget(app_frame)
|
|
183
|
-
|
|
184
|
-
def update_status_bar(self, message=None, mode=None, timeout=2000):
|
|
185
|
-
if message:
|
|
186
|
-
self.statusBar().showMessage(message, msecs=timeout)
|
|
187
|
-
if mode:
|
|
188
|
-
self.mode_label.setStyleSheet(
|
|
189
|
-
f"border: 0; " f"color: {'red' if mode == 'Simulator' else 'black'};"
|
|
190
|
-
)
|
|
191
|
-
self.mode_label.setText(f"mode: {mode}")
|
|
192
|
-
self.statusBar().repaint()
|
|
193
|
-
|
|
194
|
-
def updatePositions(self, userPositions, machinePositions, actuatorLengths):
|
|
195
|
-
|
|
196
|
-
if userPositions is None:
|
|
197
|
-
MODULE_LOGGER.warning("no userPositions passed into updatePositions(), returning.")
|
|
198
|
-
return
|
|
199
|
-
|
|
200
|
-
for upos in range(len(self.user_positions)):
|
|
201
|
-
try:
|
|
202
|
-
self.user_positions[upos][1].setText(f"{userPositions[upos]:10.4f}")
|
|
203
|
-
except IndexError:
|
|
204
|
-
MODULE_LOGGER.error(f"IndexError in user_positions, upos = {upos}")
|
|
205
|
-
|
|
206
|
-
if machinePositions is None:
|
|
207
|
-
MODULE_LOGGER.warning("no machinePositions passed into updatePositions(), returning.")
|
|
208
|
-
return
|
|
209
|
-
|
|
210
|
-
for mpos in range(len(self.mach_positions)):
|
|
211
|
-
self.mach_positions[mpos][1].setText(f"{machinePositions[mpos]:10.4f}")
|
|
212
|
-
|
|
213
|
-
if actuatorLengths is None:
|
|
214
|
-
MODULE_LOGGER.warning("no actuatorLengths passed into updatePositions(), returning.")
|
|
215
|
-
return
|
|
216
|
-
|
|
217
|
-
for idx, alen in enumerate(self.actuator_lengths):
|
|
218
|
-
alen[1].setText(f"{actuatorLengths[idx]:10.4f}")
|
|
219
|
-
|
|
220
|
-
def updateTemperatures(self, temps):
|
|
221
|
-
if temps is None or len(temps) != 2:
|
|
222
|
-
for idx, mtemp in enumerate(self.motors):
|
|
223
|
-
mtemp[1].setText(fr'N/A')
|
|
224
|
-
else:
|
|
225
|
-
for idx, mtemp in enumerate(self.motors):
|
|
226
|
-
mtemp[1].setText(fr'{temps[idx]:.2f}')
|
|
227
|
-
|
|
228
|
-
def updateStates(self, states):
|
|
229
|
-
|
|
230
|
-
if states is None:
|
|
231
|
-
return
|
|
232
|
-
|
|
233
|
-
self.updateControlButton(states[CONTROL_ONOFF])
|
|
234
|
-
self.states.set_states(states)
|
|
235
|
-
|
|
236
|
-
def updateControlButton(self, flag):
|
|
237
|
-
|
|
238
|
-
self.control.set_selected(on=flag)
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
class GimbalUIModel(GimbalUIModel):
|
|
242
|
-
def __init__(self, connection_type):
|
|
243
|
-
|
|
244
|
-
if connection_type == "proxy":
|
|
245
|
-
device = GimbalProxy()
|
|
246
|
-
elif connection_type == "direct":
|
|
247
|
-
device = GimbalController()
|
|
248
|
-
device.connect()
|
|
249
|
-
elif connection_type == "simulator":
|
|
250
|
-
device = GimbalSimulator()
|
|
251
|
-
else:
|
|
252
|
-
raise ValueError(
|
|
253
|
-
f"Unknown type of Gimbal implementation passed into the model: {connection_type}"
|
|
254
|
-
)
|
|
255
|
-
|
|
256
|
-
super().__init__(connection_type, device)
|
|
257
|
-
|
|
258
|
-
if device is not None:
|
|
259
|
-
MODULE_LOGGER.debug(f"Gimbal initialized as {device.__class__.__name__}")
|
|
260
|
-
|
|
261
|
-
def get_speed(self):
|
|
262
|
-
sr, sr_min, sr_max = self.device.get_speed()
|
|
263
|
-
return sr, sr_min, sr_max
|
|
264
|
-
|
|
265
|
-
class GimbalUIController(GimbalUIController):
|
|
266
|
-
def __init__(self, model: GimbalUIModel, view: GimbalUIView):
|
|
267
|
-
super().__init__(model, view)
|
|
268
|
-
self.set_help_topic_home("gimbal_ui")
|
|
269
|
-
|
|
270
|
-
def update_values(self):
|
|
271
|
-
|
|
272
|
-
super().update_values()
|
|
273
|
-
|
|
274
|
-
# Add here any updates to GIMBAL specific widgets
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
def parse_arguments():
|
|
278
|
-
"""
|
|
279
|
-
Prepare the arguments that are specific for this application.
|
|
280
|
-
"""
|
|
281
|
-
parser = argparse.ArgumentParser()
|
|
282
|
-
parser.add_argument(
|
|
283
|
-
"--type",
|
|
284
|
-
dest="type",
|
|
285
|
-
action="store",
|
|
286
|
-
choices={"proxy", "simulator", "direct"},
|
|
287
|
-
help="Specify Gimbal implementation you want to connect to.",
|
|
288
|
-
default="proxy",
|
|
289
|
-
)
|
|
290
|
-
parser.add_argument(
|
|
291
|
-
"--profile",
|
|
292
|
-
default=False,
|
|
293
|
-
action="store_true",
|
|
294
|
-
help="Enable info logging messages with method profile information.",
|
|
295
|
-
)
|
|
296
|
-
return parser.parse_args()
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
def main():
|
|
300
|
-
lock_file = QLockFile(str(Path("~/gimbal_ui.app.lock").expanduser()))
|
|
301
|
-
|
|
302
|
-
styles_location = get_resource(":/styles/default.qss")
|
|
303
|
-
app_logo = get_resource(":/icons/logo-gimbal.svg")
|
|
304
|
-
|
|
305
|
-
args = list(sys.argv)
|
|
306
|
-
args[1:1] = ["-stylesheet", str(styles_location)]
|
|
307
|
-
|
|
308
|
-
app = QApplication(args)
|
|
309
|
-
app.setWindowIcon(QIcon(str(app_logo)))
|
|
310
|
-
|
|
311
|
-
if lock_file.tryLock(100):
|
|
312
|
-
|
|
313
|
-
process_status = ProcessStatus()
|
|
314
|
-
|
|
315
|
-
timer_thread = threading.Thread(target=do_every, args=(10, process_status.update))
|
|
316
|
-
timer_thread.daemon = True
|
|
317
|
-
timer_thread.start()
|
|
318
|
-
|
|
319
|
-
start_http_server(GUI_SETTINGS.METRICS_PORT)
|
|
320
|
-
|
|
321
|
-
args = parse_arguments()
|
|
322
|
-
|
|
323
|
-
if args.profile:
|
|
324
|
-
Settings.set_profiling(True)
|
|
325
|
-
|
|
326
|
-
if args.type == "proxy":
|
|
327
|
-
proxy = GimbalProxy()
|
|
328
|
-
if not proxy.ping():
|
|
329
|
-
description = "Could not connect to Gimbal Control Server"
|
|
330
|
-
info_text = (
|
|
331
|
-
"The GUI will start, but the connection button will show a disconnected state. "
|
|
332
|
-
"Please check if the Control Server is running and start the server if needed. "
|
|
333
|
-
"Otherwise, check if the correct HOSTNAME for the control server is set in the "
|
|
334
|
-
"Settings.yaml "
|
|
335
|
-
"configuration file."
|
|
336
|
-
)
|
|
337
|
-
|
|
338
|
-
show_warning_message(description, info_text)
|
|
339
|
-
|
|
340
|
-
view = GimbalUIView()
|
|
341
|
-
model = GimbalUIModel(args.type)
|
|
342
|
-
GimbalUIController(model, view)
|
|
343
|
-
|
|
344
|
-
view.show()
|
|
345
|
-
|
|
346
|
-
return app.exec_()
|
|
347
|
-
else:
|
|
348
|
-
error_message = QMessageBox()
|
|
349
|
-
error_message.setIcon(QMessageBox.Warning)
|
|
350
|
-
error_message.setWindowTitle("Error")
|
|
351
|
-
error_message.setText("The Gimbal GUI application is already running!")
|
|
352
|
-
error_message.setStandardButtons(QMessageBox.Ok)
|
|
353
|
-
|
|
354
|
-
return error_message.exec()
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
if __name__ == "__main__":
|
|
358
|
-
|
|
359
|
-
logging.basicConfig(level=logging.DEBUG, format=Settings.LOG_FORMAT_FULL)
|
|
360
|
-
|
|
361
|
-
sys.exit(main())
|