cgse 2023.38.0__py3-none-any.whl → 2024.1.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- README.md +27 -0
- bump.py +85 -0
- cgse-2024.1.4.dist-info/METADATA +38 -0
- cgse-2024.1.4.dist-info/RECORD +5 -0
- {cgse-2023.38.0.dist-info → cgse-2024.1.4.dist-info}/WHEEL +1 -2
- cgse-2023.38.0.dist-info/COPYING +0 -674
- cgse-2023.38.0.dist-info/COPYING.LESSER +0 -165
- cgse-2023.38.0.dist-info/METADATA +0 -144
- cgse-2023.38.0.dist-info/RECORD +0 -649
- cgse-2023.38.0.dist-info/entry_points.txt +0 -75
- cgse-2023.38.0.dist-info/top_level.txt +0 -2
- egse/__init__.py +0 -12
- egse/__main__.py +0 -32
- egse/aeu/aeu.py +0 -5235
- egse/aeu/aeu_awg.yaml +0 -265
- egse/aeu/aeu_crio.yaml +0 -273
- egse/aeu/aeu_cs.py +0 -626
- egse/aeu/aeu_devif.py +0 -321
- egse/aeu/aeu_main_ui.py +0 -912
- egse/aeu/aeu_metrics.py +0 -131
- egse/aeu/aeu_protocol.py +0 -463
- egse/aeu/aeu_psu.yaml +0 -204
- egse/aeu/aeu_ui.py +0 -873
- egse/aeu/arbdata/FccdRead.arb +0 -2
- egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
- egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
- egse/aeu/arbdata/ccdRead25.arb +0 -2
- egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25.arb +0 -2
- egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50.arb +0 -2
- egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75.arb +0 -2
- egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
- egse/aeu/arbdata/ccdRead50.arb +0 -2
- egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
- egse/alert/__init__.py +0 -1049
- egse/alert/alertman.yaml +0 -37
- egse/alert/alertman_cs.py +0 -234
- egse/alert/alertman_ui.py +0 -603
- egse/alert/gsm/beaglebone.py +0 -138
- egse/alert/gsm/beaglebone.yaml +0 -51
- egse/alert/gsm/beaglebone_cs.py +0 -108
- egse/alert/gsm/beaglebone_devif.py +0 -130
- egse/alert/gsm/beaglebone_protocol.py +0 -48
- egse/bits.py +0 -318
- egse/camera.py +0 -44
- egse/collimator/__init__.py +0 -0
- egse/collimator/fcul/__init__.py +0 -0
- egse/collimator/fcul/ogse.py +0 -1077
- egse/collimator/fcul/ogse.yaml +0 -14
- egse/collimator/fcul/ogse_cs.py +0 -154
- egse/collimator/fcul/ogse_devif.py +0 -358
- egse/collimator/fcul/ogse_protocol.py +0 -129
- egse/collimator/fcul/ogse_sim.py +0 -431
- egse/collimator/fcul/ogse_ui.py +0 -1108
- egse/command.py +0 -699
- egse/config.py +0 -410
- egse/confman/__init__.py +0 -1015
- egse/confman/confman.yaml +0 -67
- egse/confman/confman_cs.py +0 -239
- egse/confman/confman_ui.py +0 -381
- egse/confman/setup_ui.py +0 -565
- egse/control.py +0 -442
- egse/coordinates/__init__.py +0 -531
- egse/coordinates/avoidance.py +0 -103
- egse/coordinates/cslmodel.py +0 -127
- egse/coordinates/laser_tracker_to_dict.py +0 -120
- egse/coordinates/point.py +0 -707
- egse/coordinates/pyplot.py +0 -195
- egse/coordinates/referenceFrame.py +0 -1279
- egse/coordinates/refmodel.py +0 -737
- egse/coordinates/rotationMatrix.py +0 -85
- egse/coordinates/transform3d_addon.py +0 -419
- egse/csl/__init__.py +0 -50
- egse/csl/commanding.py +0 -78
- egse/csl/icons/hexapod-connected-selected.svg +0 -30
- egse/csl/icons/hexapod-connected.svg +0 -30
- egse/csl/icons/hexapod-homing-selected.svg +0 -68
- egse/csl/icons/hexapod-homing.svg +0 -68
- egse/csl/icons/hexapod-retract-selected.svg +0 -56
- egse/csl/icons/hexapod-retract.svg +0 -51
- egse/csl/icons/hexapod-zero-selected.svg +0 -56
- egse/csl/icons/hexapod-zero.svg +0 -56
- egse/csl/icons/logo-puna.svg +0 -92
- egse/csl/icons/stop.svg +0 -1
- egse/csl/initialisation.py +0 -102
- egse/csl/mech_pos_settings.yaml +0 -18
- egse/das.py +0 -1247
- egse/das.yaml +0 -7
- egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
- egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
- egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
- egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
- egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
- egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
- egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
- egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
- egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
- egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
- egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
- egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
- egse/decorators.py +0 -415
- egse/device.py +0 -269
- egse/dpu/__init__.py +0 -2681
- egse/dpu/ccd_ui.py +0 -508
- egse/dpu/dpu.py +0 -786
- egse/dpu/dpu.yaml +0 -153
- egse/dpu/dpu_cs.py +0 -272
- egse/dpu/dpu_ui.py +0 -668
- egse/dpu/fitsgen.py +0 -2077
- egse/dpu/fitsgen_test.py +0 -752
- egse/dpu/fitsgen_ui.py +0 -399
- egse/dpu/hdf5_model.py +0 -332
- egse/dpu/hdf5_ui.py +0 -277
- egse/dpu/hdf5_viewer.py +0 -506
- egse/dpu/hk_ui.py +0 -468
- egse/dpu_commands.py +0 -81
- egse/dsi/constants.py +0 -220
- egse/dsi/esl.py +0 -870
- egse/dsi/rmap.py +0 -1042
- egse/dsi/rmapci.py +0 -37
- egse/dsi/spw.py +0 -154
- egse/dsi/spw_state.py +0 -29
- egse/dummy.py +0 -258
- egse/dyndummy.py +0 -179
- egse/env.py +0 -278
- egse/exceptions.py +0 -88
- egse/fdir/__init__.py +0 -28
- egse/fdir/fdir_manager.py +0 -85
- egse/fdir/fdir_manager.yaml +0 -51
- egse/fdir/fdir_manager_controller.py +0 -228
- egse/fdir/fdir_manager_cs.py +0 -164
- egse/fdir/fdir_manager_interface.py +0 -25
- egse/fdir/fdir_remote.py +0 -73
- egse/fdir/fdir_remote.yaml +0 -37
- egse/fdir/fdir_remote_controller.py +0 -50
- egse/fdir/fdir_remote_cs.py +0 -97
- egse/fdir/fdir_remote_interface.py +0 -14
- egse/fdir/fdir_remote_popup.py +0 -31
- egse/fee/__init__.py +0 -114
- egse/fee/f_fee_register.yaml +0 -43
- egse/fee/fee.py +0 -631
- egse/fee/feesim.py +0 -750
- egse/fee/n_fee_hk.py +0 -761
- egse/fee/nfee.py +0 -187
- egse/filterwheel/__init__.py +0 -4
- egse/filterwheel/eksma/__init__.py +0 -24
- egse/filterwheel/eksma/fw8smc4.py +0 -661
- egse/filterwheel/eksma/fw8smc4.yaml +0 -121
- egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
- egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
- egse/filterwheel/eksma/fw8smc4_protocol.py +0 -81
- egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
- egse/filterwheel/eksma/fw8smc5.py +0 -111
- egse/filterwheel/eksma/fw8smc5.yaml +0 -105
- egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
- egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
- egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
- egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
- egse/filterwheel/eksma/fw8smc5_ui.py +0 -1068
- egse/filterwheel/eksma/testpythonfw.py +0 -215
- egse/fov/__init__.py +0 -65
- egse/fov/fov_hk.py +0 -712
- egse/fov/fov_ui.py +0 -861
- egse/fov/fov_ui_controller.py +0 -140
- egse/fov/fov_ui_model.py +0 -200
- egse/fov/fov_ui_view.py +0 -345
- egse/gimbal/__init__.py +0 -32
- egse/gimbal/symetrie/__init__.py +0 -26
- egse/gimbal/symetrie/alpha.py +0 -586
- egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
- egse/gimbal/symetrie/gimbal.py +0 -877
- egse/gimbal/symetrie/gimbal.yaml +0 -168
- egse/gimbal/symetrie/gimbal_cs.py +0 -183
- egse/gimbal/symetrie/gimbal_protocol.py +0 -135
- egse/gimbal/symetrie/gimbal_ui.py +0 -361
- egse/gimbal/symetrie/pmac.py +0 -1006
- egse/gimbal/symetrie/pmac_regex.py +0 -83
- egse/graph.py +0 -132
- egse/gui/__init__.py +0 -47
- egse/gui/buttons.py +0 -378
- egse/gui/focalplane.py +0 -1281
- egse/gui/formatter.py +0 -10
- egse/gui/led.py +0 -162
- egse/gui/limitswitch.py +0 -143
- egse/gui/mechanisms.py +0 -588
- egse/gui/states.py +0 -148
- egse/gui/stripchart.py +0 -729
- egse/gui/switch.py +0 -112
- egse/h5.py +0 -274
- egse/help/__init__.py +0 -0
- egse/help/help_ui.py +0 -126
- egse/hexapod/__init__.py +0 -32
- egse/hexapod/symetrie/__init__.py +0 -138
- egse/hexapod/symetrie/alpha.py +0 -874
- egse/hexapod/symetrie/dynalpha.py +0 -1387
- egse/hexapod/symetrie/hexapod_ui.py +0 -1516
- egse/hexapod/symetrie/pmac.py +0 -1010
- egse/hexapod/symetrie/pmac_regex.py +0 -83
- egse/hexapod/symetrie/puna.py +0 -1167
- egse/hexapod/symetrie/puna.yaml +0 -193
- egse/hexapod/symetrie/puna_cs.py +0 -196
- egse/hexapod/symetrie/puna_protocol.py +0 -131
- egse/hexapod/symetrie/puna_ui.py +0 -434
- egse/hexapod/symetrie/punaplus.py +0 -107
- egse/hexapod/symetrie/zonda.py +0 -872
- egse/hexapod/symetrie/zonda.yaml +0 -337
- egse/hexapod/symetrie/zonda_cs.py +0 -172
- egse/hexapod/symetrie/zonda_devif.py +0 -415
- egse/hexapod/symetrie/zonda_protocol.py +0 -119
- egse/hexapod/symetrie/zonda_ui.py +0 -449
- egse/hk.py +0 -765
- egse/icons/aeu-cs-start.svg +0 -117
- egse/icons/aeu-cs-stop.svg +0 -118
- egse/icons/aeu-cs.svg +0 -107
- egse/icons/aeu_cs-started.svg +0 -112
- egse/icons/aeu_cs-stopped.svg +0 -112
- egse/icons/aeu_cs.svg +0 -55
- egse/icons/alert.svg +0 -1
- egse/icons/arrow-double-left.png +0 -0
- egse/icons/arrow-double-right.png +0 -0
- egse/icons/arrow-up.svg +0 -11
- egse/icons/backward.svg +0 -1
- egse/icons/busy.svg +0 -1
- egse/icons/cleaning.svg +0 -115
- egse/icons/color-scheme.svg +0 -1
- egse/icons/cs-connected-alert.svg +0 -91
- egse/icons/cs-connected-disabled.svg +0 -43
- egse/icons/cs-connected.svg +0 -89
- egse/icons/cs-not-connected.svg +0 -44
- egse/icons/double-left-arrow.svg +0 -1
- egse/icons/double-right-arrow.svg +0 -1
- egse/icons/erase-disabled.svg +0 -19
- egse/icons/erase.svg +0 -59
- egse/icons/fitsgen-start.svg +0 -47
- egse/icons/fitsgen-stop.svg +0 -48
- egse/icons/fitsgen.svg +0 -1
- egse/icons/forward.svg +0 -1
- egse/icons/fov-hk-start.svg +0 -33
- egse/icons/fov-hk-stop.svg +0 -37
- egse/icons/fov-hk.svg +0 -1
- egse/icons/front-desk.svg +0 -1
- egse/icons/home-actioned.svg +0 -15
- egse/icons/home-disabled.svg +0 -15
- egse/icons/home.svg +0 -13
- egse/icons/info.svg +0 -1
- egse/icons/invalid.png +0 -0
- egse/icons/led-green.svg +0 -20
- egse/icons/led-grey.svg +0 -20
- egse/icons/led-orange.svg +0 -20
- egse/icons/led-red.svg +0 -20
- egse/icons/led-square-green.svg +0 -134
- egse/icons/led-square-grey.svg +0 -134
- egse/icons/led-square-orange.svg +0 -134
- egse/icons/led-square-red.svg +0 -134
- egse/icons/limit-switch-all-green.svg +0 -115
- egse/icons/limit-switch-all-red.svg +0 -117
- egse/icons/limit-switch-el+.svg +0 -116
- egse/icons/limit-switch-el-.svg +0 -117
- egse/icons/location-marker.svg +0 -1
- egse/icons/logo-dpu.svg +0 -48
- egse/icons/logo-gimbal.svg +0 -112
- egse/icons/logo-huber.svg +0 -23
- egse/icons/logo-ogse.svg +0 -31
- egse/icons/logo-puna.svg +0 -92
- egse/icons/logo-tcs.svg +0 -29
- egse/icons/logo-zonda.svg +0 -66
- egse/icons/maximize.svg +0 -1
- egse/icons/meter.svg +0 -1
- egse/icons/more.svg +0 -45
- egse/icons/n-fee-hk-start.svg +0 -24
- egse/icons/n-fee-hk-stop.svg +0 -25
- egse/icons/n-fee-hk.svg +0 -83
- egse/icons/observing-off.svg +0 -46
- egse/icons/observing-on.svg +0 -46
- egse/icons/open-document-hdf5.png +0 -0
- egse/icons/open-document-hdf5.svg +0 -21
- egse/icons/ops-mode.svg +0 -1
- egse/icons/play-green.svg +0 -17
- egse/icons/plugged-disabled.svg +0 -27
- egse/icons/plugged.svg +0 -21
- egse/icons/pm_ui.svg +0 -1
- egse/icons/power-button-green.svg +0 -27
- egse/icons/power-button-red.svg +0 -27
- egse/icons/power-button.svg +0 -27
- egse/icons/radar.svg +0 -1
- egse/icons/radioactive.svg +0 -2
- egse/icons/reload.svg +0 -1
- egse/icons/remote-control-off.svg +0 -28
- egse/icons/remote-control-on.svg +0 -28
- egse/icons/repeat-blue.svg +0 -15
- egse/icons/repeat.svg +0 -1
- egse/icons/settings.svg +0 -1
- egse/icons/shrink.svg +0 -1
- egse/icons/shutter.svg +0 -1
- egse/icons/sign-off.svg +0 -1
- egse/icons/sign-on.svg +0 -1
- egse/icons/sim-mode.svg +0 -1
- egse/icons/small-buttons-go.svg +0 -20
- egse/icons/small-buttons-minus.svg +0 -51
- egse/icons/small-buttons-plus.svg +0 -51
- egse/icons/sponge.svg +0 -220
- egse/icons/start-button-disabled.svg +0 -84
- egse/icons/start-button.svg +0 -50
- egse/icons/stop-button-disabled.svg +0 -84
- egse/icons/stop-button.svg +0 -50
- egse/icons/stop-red.svg +0 -17
- egse/icons/stop.svg +0 -1
- egse/icons/switch-disabled-square.svg +0 -87
- egse/icons/switch-disabled.svg +0 -15
- egse/icons/switch-off-square.svg +0 -87
- egse/icons/switch-off.svg +0 -72
- egse/icons/switch-on-square.svg +0 -87
- egse/icons/switch-on.svg +0 -61
- egse/icons/temperature-control.svg +0 -44
- egse/icons/th_ui_logo.svg +0 -1
- egse/icons/unplugged.svg +0 -23
- egse/icons/unvalid.png +0 -0
- egse/icons/user-interface.svg +0 -1
- egse/icons/vacuum.svg +0 -1
- egse/icons/valid.png +0 -0
- egse/icons/zoom-to-pixel-dark.svg +0 -64
- egse/icons/zoom-to-pixel-white.svg +0 -36
- egse/images/big-rotation-stage.png +0 -0
- egse/images/connected-100.png +0 -0
- egse/images/cross.svg +0 -6
- egse/images/disconnected-100.png +0 -0
- egse/images/gui-icon.png +0 -0
- egse/images/home.svg +0 -6
- egse/images/info-icon.png +0 -0
- egse/images/led-black.svg +0 -89
- egse/images/led-green.svg +0 -85
- egse/images/led-orange.svg +0 -85
- egse/images/led-red.svg +0 -85
- egse/images/load-icon.png +0 -0
- egse/images/load-setup.png +0 -0
- egse/images/load.png +0 -0
- egse/images/pause.png +0 -0
- egse/images/play-button.svg +0 -8
- egse/images/play.png +0 -0
- egse/images/process-status.png +0 -0
- egse/images/restart.png +0 -0
- egse/images/search.png +0 -0
- egse/images/sma.png +0 -0
- egse/images/start.png +0 -0
- egse/images/stop-button.svg +0 -8
- egse/images/stop.png +0 -0
- egse/images/switch-off.svg +0 -48
- egse/images/switch-on.svg +0 -48
- egse/images/undo.png +0 -0
- egse/images/update-button.svg +0 -11
- egse/imageviewer/exposureselection.py +0 -475
- egse/imageviewer/imageviewer.py +0 -198
- egse/imageviewer/matchfocalplane.py +0 -179
- egse/imageviewer/subfieldposition.py +0 -133
- egse/lampcontrol/__init__.py +0 -4
- egse/lampcontrol/beaglebone/beaglebone.py +0 -178
- egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
- egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
- egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
- egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
- egse/lampcontrol/energetiq/__init__.py +0 -22
- egse/lampcontrol/energetiq/eq99.yaml +0 -98
- egse/lampcontrol/energetiq/lampEQ99.py +0 -283
- egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
- egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
- egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
- egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -69
- egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
- egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
- egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
- egse/lib/macOS/ESL-RMAP_v34_86.dylib +0 -0
- egse/lib/macOS/EtherSpaceLink_v34_86.dylib +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
- egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
- egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
- egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
- egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
- egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
- egse/lib/ximc/libximc.framework/libbindy.so +0 -0
- egse/lib/ximc/libximc.framework/libximc +0 -0
- egse/lib/ximc/libximc.framework/libximc.so +0 -0
- egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
- egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
- egse/lib/ximc/pyximc.py +0 -922
- egse/listener.py +0 -73
- egse/logger/__init__.py +0 -243
- egse/logger/log_cs.py +0 -321
- egse/metrics.py +0 -98
- egse/mixin.py +0 -464
- egse/monitoring.py +0 -95
- egse/ni/alarms/__init__.py +0 -26
- egse/ni/alarms/cdaq9375.py +0 -300
- egse/ni/alarms/cdaq9375.yaml +0 -89
- egse/ni/alarms/cdaq9375_cs.py +0 -130
- egse/ni/alarms/cdaq9375_devif.py +0 -183
- egse/ni/alarms/cdaq9375_protocol.py +0 -48
- egse/obs_inspection.py +0 -163
- egse/observer.py +0 -41
- egse/obsid.py +0 -163
- egse/powermeter/__init__.py +0 -0
- egse/powermeter/ni/__init__.py +0 -38
- egse/powermeter/ni/cdaq9184.py +0 -224
- egse/powermeter/ni/cdaq9184.yaml +0 -73
- egse/powermeter/ni/cdaq9184_cs.py +0 -130
- egse/powermeter/ni/cdaq9184_devif.py +0 -201
- egse/powermeter/ni/cdaq9184_protocol.py +0 -48
- egse/powermeter/ni/cdaq9184_ui.py +0 -544
- egse/powermeter/thorlabs/__init__.py +0 -25
- egse/powermeter/thorlabs/pm100a.py +0 -380
- egse/powermeter/thorlabs/pm100a.yaml +0 -132
- egse/powermeter/thorlabs/pm100a_cs.py +0 -136
- egse/powermeter/thorlabs/pm100a_devif.py +0 -127
- egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
- egse/powermeter/thorlabs/pm100a_ui.py +0 -725
- egse/process.py +0 -451
- egse/procman/__init__.py +0 -811
- egse/procman/cannot_start_process_popup.py +0 -43
- egse/procman/procman.yaml +0 -49
- egse/procman/procman_cs.py +0 -201
- egse/procman/procman_ui.py +0 -2081
- egse/protocol.py +0 -603
- egse/proxy.py +0 -522
- egse/randomwalk.py +0 -140
- egse/reg.py +0 -585
- egse/reload.py +0 -122
- egse/reprocess.py +0 -675
- egse/resource.py +0 -333
- egse/rst.py +0 -135
- egse/search.py +0 -182
- egse/serialdevice.py +0 -190
- egse/services.py +0 -212
- egse/services.yaml +0 -51
- egse/settings.py +0 -379
- egse/settings.yaml +0 -980
- egse/setup.py +0 -1180
- egse/shutter/__init__.py +0 -0
- egse/shutter/thorlabs/__init__.py +0 -19
- egse/shutter/thorlabs/ksc101.py +0 -205
- egse/shutter/thorlabs/ksc101.yaml +0 -105
- egse/shutter/thorlabs/ksc101_cs.py +0 -136
- egse/shutter/thorlabs/ksc101_devif.py +0 -201
- egse/shutter/thorlabs/ksc101_protocol.py +0 -69
- egse/shutter/thorlabs/ksc101_ui.py +0 -548
- egse/shutter/thorlabs/sc10.py +0 -82
- egse/shutter/thorlabs/sc10.yaml +0 -52
- egse/shutter/thorlabs/sc10_controller.py +0 -81
- egse/shutter/thorlabs/sc10_cs.py +0 -108
- egse/shutter/thorlabs/sc10_interface.py +0 -25
- egse/shutter/thorlabs/sc10_simulator.py +0 -30
- egse/simulator.py +0 -41
- egse/slack.py +0 -61
- egse/socketdevice.py +0 -218
- egse/sockets.py +0 -218
- egse/spw.py +0 -1479
- egse/stages/__init__.py +0 -12
- egse/stages/aerotech/ensemble.py +0 -247
- egse/stages/aerotech/ensemble.yaml +0 -205
- egse/stages/aerotech/ensemble_controller.py +0 -275
- egse/stages/aerotech/ensemble_cs.py +0 -110
- egse/stages/aerotech/ensemble_interface.py +0 -132
- egse/stages/aerotech/ensemble_parameters.py +0 -433
- egse/stages/aerotech/ensemble_simulator.py +0 -27
- egse/stages/aerotech/mgse_sim.py +0 -193
- egse/stages/arun/smd3.py +0 -111
- egse/stages/arun/smd3.yaml +0 -68
- egse/stages/arun/smd3_controller.py +0 -472
- egse/stages/arun/smd3_cs.py +0 -112
- egse/stages/arun/smd3_interface.py +0 -53
- egse/stages/arun/smd3_simulator.py +0 -27
- egse/stages/arun/smd3_stop.py +0 -16
- egse/stages/huber/__init__.py +0 -49
- egse/stages/huber/smc9300.py +0 -904
- egse/stages/huber/smc9300.yaml +0 -63
- egse/stages/huber/smc9300_cs.py +0 -178
- egse/stages/huber/smc9300_devif.py +0 -345
- egse/stages/huber/smc9300_protocol.py +0 -111
- egse/stages/huber/smc9300_sim.py +0 -547
- egse/stages/huber/smc9300_ui.py +0 -973
- egse/state.py +0 -173
- egse/statemachine.py +0 -274
- egse/storage/__init__.py +0 -1004
- egse/storage/persistence.py +0 -2295
- egse/storage/storage.yaml +0 -72
- egse/storage/storage_cs.py +0 -214
- egse/styles/dark.qss +0 -343
- egse/styles/default.qss +0 -48
- egse/synoptics/__init__.py +0 -412
- egse/synoptics/syn.yaml +0 -9
- egse/synoptics/syn_cs.py +0 -195
- egse/system.py +0 -1408
- egse/tcs/__init__.py +0 -14
- egse/tcs/tcs.py +0 -874
- egse/tcs/tcs.yaml +0 -14
- egse/tcs/tcs_cs.py +0 -202
- egse/tcs/tcs_devif.py +0 -292
- egse/tcs/tcs_protocol.py +0 -177
- egse/tcs/tcs_sim.py +0 -177
- egse/tcs/tcs_ui.py +0 -543
- egse/tdms.py +0 -171
- egse/tempcontrol/__init__.py +0 -23
- egse/tempcontrol/agilent/agilent34970.py +0 -109
- egse/tempcontrol/agilent/agilent34970.yaml +0 -44
- egse/tempcontrol/agilent/agilent34970_cs.py +0 -116
- egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
- egse/tempcontrol/agilent/agilent34970_protocol.py +0 -99
- egse/tempcontrol/agilent/agilent34972.py +0 -111
- egse/tempcontrol/agilent/agilent34972.yaml +0 -44
- egse/tempcontrol/agilent/agilent34972_cs.py +0 -117
- egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
- egse/tempcontrol/agilent/agilent34972_protocol.py +0 -101
- egse/tempcontrol/beaglebone/beaglebone.py +0 -342
- egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
- egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
- egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -135
- egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -681
- egse/tempcontrol/digalox/digalox.py +0 -107
- egse/tempcontrol/digalox/digalox.yaml +0 -36
- egse/tempcontrol/digalox/digalox_cs.py +0 -112
- egse/tempcontrol/digalox/digalox_protocol.py +0 -55
- egse/tempcontrol/keithley/__init__.py +0 -33
- egse/tempcontrol/keithley/daq6510.py +0 -662
- egse/tempcontrol/keithley/daq6510.yaml +0 -105
- egse/tempcontrol/keithley/daq6510_cs.py +0 -163
- egse/tempcontrol/keithley/daq6510_devif.py +0 -343
- egse/tempcontrol/keithley/daq6510_protocol.py +0 -78
- egse/tempcontrol/keithley/daq6510_sim.py +0 -186
- egse/tempcontrol/lakeshore/__init__.py +0 -33
- egse/tempcontrol/lakeshore/lsci.py +0 -361
- egse/tempcontrol/lakeshore/lsci.yaml +0 -162
- egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
- egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
- egse/tempcontrol/lakeshore/lsci_protocol.py +0 -73
- egse/tempcontrol/lakeshore/lsci_ui.py +0 -389
- egse/tempcontrol/ni/__init__.py +0 -0
- egse/tempcontrol/spid/spid.py +0 -109
- egse/tempcontrol/spid/spid.yaml +0 -81
- egse/tempcontrol/spid/spid_controller.py +0 -279
- egse/tempcontrol/spid/spid_cs.py +0 -136
- egse/tempcontrol/spid/spid_protocol.py +0 -107
- egse/tempcontrol/spid/spid_ui.py +0 -727
- egse/tempcontrol/srs/__init__.py +0 -22
- egse/tempcontrol/srs/ptc10.py +0 -875
- egse/tempcontrol/srs/ptc10.yaml +0 -227
- egse/tempcontrol/srs/ptc10_cs.py +0 -128
- egse/tempcontrol/srs/ptc10_devif.py +0 -118
- egse/tempcontrol/srs/ptc10_protocol.py +0 -42
- egse/tempcontrol/srs/ptc10_ui.py +0 -906
- egse/ups/apc/apc.py +0 -236
- egse/ups/apc/apc.yaml +0 -45
- egse/ups/apc/apc_cs.py +0 -101
- egse/ups/apc/apc_protocol.py +0 -125
- egse/user.yaml +0 -7
- egse/vacuum/beaglebone/beaglebone.py +0 -149
- egse/vacuum/beaglebone/beaglebone.yaml +0 -44
- egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
- egse/vacuum/beaglebone/beaglebone_devif.py +0 -164
- egse/vacuum/beaglebone/beaglebone_protocol.py +0 -193
- egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
- egse/vacuum/instrutech/igm402.py +0 -92
- egse/vacuum/instrutech/igm402.yaml +0 -90
- egse/vacuum/instrutech/igm402_controller.py +0 -128
- egse/vacuum/instrutech/igm402_cs.py +0 -108
- egse/vacuum/instrutech/igm402_interface.py +0 -49
- egse/vacuum/instrutech/igm402_simulator.py +0 -36
- egse/vacuum/keller/kellerBus.py +0 -256
- egse/vacuum/keller/leo3.py +0 -102
- egse/vacuum/keller/leo3.yaml +0 -38
- egse/vacuum/keller/leo3_controller.py +0 -83
- egse/vacuum/keller/leo3_cs.py +0 -101
- egse/vacuum/keller/leo3_interface.py +0 -33
- egse/vacuum/mks/evision.py +0 -86
- egse/vacuum/mks/evision.yaml +0 -75
- egse/vacuum/mks/evision_cs.py +0 -101
- egse/vacuum/mks/evision_devif.py +0 -316
- egse/vacuum/mks/evision_interface.py +0 -60
- egse/vacuum/mks/evision_simulator.py +0 -24
- egse/vacuum/mks/evision_ui.py +0 -704
- egse/vacuum/pfeiffer/acp40.py +0 -87
- egse/vacuum/pfeiffer/acp40.yaml +0 -60
- egse/vacuum/pfeiffer/acp40_controller.py +0 -117
- egse/vacuum/pfeiffer/acp40_cs.py +0 -109
- egse/vacuum/pfeiffer/acp40_interface.py +0 -40
- egse/vacuum/pfeiffer/acp40_simulator.py +0 -39
- egse/vacuum/pfeiffer/tc400.py +0 -113
- egse/vacuum/pfeiffer/tc400.yaml +0 -83
- egse/vacuum/pfeiffer/tc400_controller.py +0 -140
- egse/vacuum/pfeiffer/tc400_cs.py +0 -109
- egse/vacuum/pfeiffer/tc400_interface.py +0 -70
- egse/vacuum/pfeiffer/tc400_simulator.py +0 -24
- egse/vacuum/pfeiffer/tpg261.py +0 -81
- egse/vacuum/pfeiffer/tpg261.yaml +0 -66
- egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
- egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
- egse/vacuum/pfeiffer/tpg261_interface.py +0 -60
- egse/vacuum/pfeiffer/tpg261_simulator.py +0 -24
- egse/version.py +0 -174
- egse/visitedpositions.py +0 -398
- egse/windowing.py +0 -213
- egse/zmq/__init__.py +0 -28
- egse/zmq/spw.py +0 -160
- egse/zmq_ser.py +0 -41
- scripts/alerts/cold.yaml +0 -278
- scripts/alerts/example_alerts.yaml +0 -54
- scripts/alerts/transition.yaml +0 -14
- scripts/alerts/warm.yaml +0 -49
- scripts/analyse_n_fee_hk_data.py +0 -44
- scripts/check_hdf5_files.py +0 -192
- scripts/check_register_sync.py +0 -47
- scripts/create_hdf5_report.py +0 -295
- scripts/csl_model.py +0 -436
- scripts/csl_restore_setup.py +0 -230
- scripts/export-grafana-dashboards.py +0 -50
- scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -59
- scripts/fdir/fdir_table.yaml +0 -70
- scripts/fdir/fdir_test_recovery.py +0 -11
- scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
- scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -64
- scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -61
- scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
- scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
- scripts/fix_csv.py +0 -80
- scripts/n_fee_supply_voltage_calculation.py +0 -92
- scripts/playground.py +0 -30
- scripts/print_hdf5_hk_data.py +0 -68
- scripts/print_register_map.py +0 -43
- scripts/sron/commanding/control_heaters.py +0 -44
- scripts/sron/commanding/pumpdown.py +0 -46
- scripts/sron/commanding/set_pid_setpoint.py +0 -19
- scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
- scripts/sron/commanding/shutdown_pumps.py +0 -33
- scripts/sron/tm_gen/tm_gen_agilent.py +0 -38
- scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
- scripts/sron/tm_gen/tm_gen_spid.py +0 -13
- scripts/update_operational_cgse.py +0 -268
- scripts/update_operational_cgse_old.py +0 -273
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import os
|
|
2
|
-
import logging
|
|
3
|
-
|
|
4
|
-
from egse.decorators import dynamic_interface
|
|
5
|
-
from egse.device import DeviceInterface
|
|
6
|
-
from egse.proxy import Proxy
|
|
7
|
-
from egse.settings import Settings
|
|
8
|
-
from egse.command import ClientServerCommand
|
|
9
|
-
from egse.confman import ConfigurationManagerProxy
|
|
10
|
-
from egse.zmq_ser import connect_address
|
|
11
|
-
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
CTRL_SETTINGS = Settings.load("BeagleBone Heater Control Server")
|
|
15
|
-
DEVICE_SETTINGS = Settings.load(filename='beaglebone.yaml')
|
|
16
|
-
|
|
17
|
-
LED_PINS = [69, 68, 66, 67]
|
|
18
|
-
PWM_PINS = [4, 5, 7, 8]
|
|
19
|
-
|
|
20
|
-
class BeagleboneCommand(ClientServerCommand):
|
|
21
|
-
def get_cmd_string(self, *args, **kwargs):
|
|
22
|
-
out = super().get_cmd_string(*args, **kwargs)
|
|
23
|
-
return out + '\n'
|
|
24
|
-
|
|
25
|
-
class BeagleboneError(Exception):
|
|
26
|
-
pass
|
|
27
|
-
|
|
28
|
-
class BeagleboneInterface(DeviceInterface):
|
|
29
|
-
""" BeagleBone base class."""
|
|
30
|
-
|
|
31
|
-
@dynamic_interface
|
|
32
|
-
def connect_beaglebone(self, device):
|
|
33
|
-
return NotImplemented
|
|
34
|
-
|
|
35
|
-
@dynamic_interface
|
|
36
|
-
def set_enable(self, dev_idx, chnl_idx, enable):
|
|
37
|
-
""" Enable PWM pin. """
|
|
38
|
-
return NotImplemented
|
|
39
|
-
|
|
40
|
-
@dynamic_interface
|
|
41
|
-
def set_duty_cycle(self, dev_idx, chnl_idx, duty_cycle):
|
|
42
|
-
""" Duty cycle duration in ns. """
|
|
43
|
-
return NotImplemented
|
|
44
|
-
|
|
45
|
-
@dynamic_interface
|
|
46
|
-
def set_period(self, dev_idx, chnl_idx, period):
|
|
47
|
-
""" Period duration in ns. """
|
|
48
|
-
return NotImplemented
|
|
49
|
-
|
|
50
|
-
@dynamic_interface
|
|
51
|
-
def get_temperature(self, dev_idx):
|
|
52
|
-
""" Get board temperature. """
|
|
53
|
-
return NotImplemented
|
|
54
|
-
|
|
55
|
-
@dynamic_interface
|
|
56
|
-
def get_voltage(self, dev_idx, chnl_idx):
|
|
57
|
-
""" Get channel voltage. """
|
|
58
|
-
return NotImplemented
|
|
59
|
-
|
|
60
|
-
@dynamic_interface
|
|
61
|
-
def get_current(self, dev_idx, chnl_idx):
|
|
62
|
-
""" Get channel current. """
|
|
63
|
-
return NotImplemented
|
|
64
|
-
|
|
65
|
-
@dynamic_interface
|
|
66
|
-
def get_power(self, dev_idx, chnl_idx):
|
|
67
|
-
""" Get channel power. """
|
|
68
|
-
return NotImplemented
|
|
69
|
-
|
|
70
|
-
@dynamic_interface
|
|
71
|
-
def get_enable(self, dev_idx, chnl_idx):
|
|
72
|
-
""" Get enabled state. """
|
|
73
|
-
return NotImplemented
|
|
74
|
-
|
|
75
|
-
@dynamic_interface
|
|
76
|
-
def get_duty_cycle(self, dev_idx, chnl_idx):
|
|
77
|
-
""" Get duty cycle. """
|
|
78
|
-
return NotImplemented
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
class BeagleboneSimulator(BeagleboneInterface):
|
|
82
|
-
|
|
83
|
-
def __init__(self):
|
|
84
|
-
super().__init__()
|
|
85
|
-
self._is_connected = True
|
|
86
|
-
self.duty_cycle = [[[] for _ in range(4)] for _ in range(6)]
|
|
87
|
-
self.enabled = [[[] for _ in range(4)] for _ in range(6)]
|
|
88
|
-
|
|
89
|
-
for htr_idx in range(0, 6):
|
|
90
|
-
for ch_idx in range(0, 4):
|
|
91
|
-
self.duty_cycle[htr_idx][ch_idx] = 2 * ch_idx + htr_idx
|
|
92
|
-
self.enabled[htr_idx][ch_idx] = False
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def is_connected(self):
|
|
96
|
-
return self._is_connected
|
|
97
|
-
|
|
98
|
-
def is_simulator(self):
|
|
99
|
-
return True
|
|
100
|
-
|
|
101
|
-
def connect(self):
|
|
102
|
-
self._is_connected = True
|
|
103
|
-
|
|
104
|
-
def disconnect(self):
|
|
105
|
-
self._is_connected = False
|
|
106
|
-
|
|
107
|
-
def reconnect(self):
|
|
108
|
-
if self.is_connected():
|
|
109
|
-
self.disconnect()
|
|
110
|
-
self.connect()
|
|
111
|
-
|
|
112
|
-
def set_enable(self, dev_idx, chnl_idx, enable):
|
|
113
|
-
logger.info(f"Heater {dev_idx} Channel {chnl_idx} state has been set to {enable}")
|
|
114
|
-
self.enabled[dev_idx][chnl_idx] = enable
|
|
115
|
-
|
|
116
|
-
def set_duty_cycle(self, dev_idx, chnl_idx, duty_cycle):
|
|
117
|
-
logger.info(f"Duty cycle for Heater {dev_idx} Channel {chnl_idx} set to {duty_cycle}ns")
|
|
118
|
-
self.duty_cycle[dev_idx][chnl_idx] = duty_cycle
|
|
119
|
-
|
|
120
|
-
def set_period(self, dev_idx, chnl_idx, period):
|
|
121
|
-
logger.info(f"Period for Heater {dev_idx} Channel {chnl_idx} set to {period} ns")
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def get_temperature(self, dev_idx):
|
|
125
|
-
return 20.0
|
|
126
|
-
|
|
127
|
-
def get_voltage(self, dev_idx, chnl_idx):
|
|
128
|
-
return 1.0
|
|
129
|
-
|
|
130
|
-
def get_current(self, dev_idx, chnl_idx):
|
|
131
|
-
return 0.1
|
|
132
|
-
|
|
133
|
-
def get_power(self, dev_idx, chnl_idx):
|
|
134
|
-
return 1.0
|
|
135
|
-
|
|
136
|
-
def get_enable(self, dev_idx, chnl_idx):
|
|
137
|
-
return self.enabled[dev_idx][chnl_idx]
|
|
138
|
-
|
|
139
|
-
def get_duty_cycle(self, dev_idx, chnl_idx):
|
|
140
|
-
return self.duty_cycle[dev_idx][chnl_idx]
|
|
141
|
-
|
|
142
|
-
def get_availability(self):
|
|
143
|
-
return [True] * 6
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
class BeagleboneHeater:
|
|
147
|
-
|
|
148
|
-
# Perform SRON gssw imports here to avoid issues at other THs
|
|
149
|
-
from gssw.lib.device import Device
|
|
150
|
-
|
|
151
|
-
def __init__(self, num, config, hal):
|
|
152
|
-
self.num = num + 1
|
|
153
|
-
|
|
154
|
-
self.config = config
|
|
155
|
-
self.hal = hal
|
|
156
|
-
|
|
157
|
-
self._is_connected = False
|
|
158
|
-
|
|
159
|
-
try:
|
|
160
|
-
self.connect()
|
|
161
|
-
except Exception:
|
|
162
|
-
self._is_connected = False
|
|
163
|
-
|
|
164
|
-
@property
|
|
165
|
-
def connected(self):
|
|
166
|
-
return self._is_connected
|
|
167
|
-
|
|
168
|
-
def connect(self):
|
|
169
|
-
self.pwm = self.Device(f'pwm_{self.num}', self.config, self.hal)
|
|
170
|
-
self.i2c = self.Device(f'i2c_{self.num}', self.config, self.hal)
|
|
171
|
-
self.gpio = self.Device(f'gpio_{self.num}', self.config, self.hal)
|
|
172
|
-
|
|
173
|
-
for i in range(4):
|
|
174
|
-
self.set_period(i, 10000)
|
|
175
|
-
|
|
176
|
-
self._is_connected = True
|
|
177
|
-
|
|
178
|
-
def disconnect(self):
|
|
179
|
-
if self.pwm.socket:
|
|
180
|
-
self.pwm.socket.close()
|
|
181
|
-
if self.i2c.socket:
|
|
182
|
-
self.i2c.socket.close()
|
|
183
|
-
if self.gpio.socket:
|
|
184
|
-
self.gpio.socket.close()
|
|
185
|
-
|
|
186
|
-
self._is_connected = False
|
|
187
|
-
|
|
188
|
-
def disconnected(self):
|
|
189
|
-
self._is_connected = False
|
|
190
|
-
|
|
191
|
-
@property
|
|
192
|
-
def temperature(self):
|
|
193
|
-
def twosComp(val, bits):
|
|
194
|
-
if (val & (1 << (bits - 1))) != 0:
|
|
195
|
-
val = val - (1 << bits)
|
|
196
|
-
return val
|
|
197
|
-
raw = self.i2c.get('TEMP')
|
|
198
|
-
val = ((raw << 8) & 0xFF00) + (raw >> 8)
|
|
199
|
-
val = val >> 4
|
|
200
|
-
return twosComp(val, 12) * (128/0x7FF)
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
def set_enable(self, channel, state):
|
|
205
|
-
self.pwm.setMultiple([('PWM_NUM', PWM_PINS[channel]),
|
|
206
|
-
('PWM_ENABLE', state)])
|
|
207
|
-
self.gpio.setMultiple([('GPIO_PIN', LED_PINS[channel]),
|
|
208
|
-
('GPIO_VALUE', state)])
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
def set_duty_cycle(self, channel, duty_cycle):
|
|
212
|
-
self.pwm.setMultiple([('PWM_NUM', PWM_PINS[channel]),
|
|
213
|
-
('PWM_DUTY_CYCLE', duty_cycle)])
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
def set_period(self, channel, period):
|
|
217
|
-
self.pwm.setMultiple([('PWM_NUM', PWM_PINS[channel]),
|
|
218
|
-
('PWM_PERIOD', period)])
|
|
219
|
-
|
|
220
|
-
def get_voltage(self, channel):
|
|
221
|
-
raw = self.i2c.get(f'V_{channel}')
|
|
222
|
-
val = ((raw << 8) & 0xFF00) + (raw >> 8)
|
|
223
|
-
val = val >> 4
|
|
224
|
-
return val * 0.025
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
def get_current(self, channel):
|
|
228
|
-
raw = self.i2c.get(f'I_{channel}')
|
|
229
|
-
val = ((raw << 8) & 0xFF00) + (raw >> 8)
|
|
230
|
-
val = val >> 4
|
|
231
|
-
return val * 5e-4
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
def get_power(self, channel):
|
|
235
|
-
return self.get_voltage(channel) * self.get_current(channel)
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
def get_enable(self, channel):
|
|
239
|
-
pwm_enable = self.pwm.getSetMultiple([('PWM_NUM', PWM_PINS[channel]),
|
|
240
|
-
('PWM_ENABLE', None)])[0]
|
|
241
|
-
return bool(pwm_enable)
|
|
242
|
-
|
|
243
|
-
def get_duty_cycle(self, channel):
|
|
244
|
-
|
|
245
|
-
pwm_duty_cycle = self.pwm.getSetMultiple([('PWM_NUM', PWM_PINS[channel]), ('PWM_DUTY_CYCLE', None)])
|
|
246
|
-
return int(pwm_duty_cycle[0])
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
def set_timeout(self, timeout):
|
|
250
|
-
self.pwm.setTimeout(timeout)
|
|
251
|
-
self.gpio.setTimeout(timeout)
|
|
252
|
-
self.i2c.setTimeout(timeout)
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
class BeagleboneHeaterController(BeagleboneInterface):
|
|
256
|
-
|
|
257
|
-
def __init__(self):
|
|
258
|
-
super().__init__()
|
|
259
|
-
|
|
260
|
-
# Perform SRON gssw imports here to avoid issues at other THs
|
|
261
|
-
from gssw.config.configclient import ConfigClient
|
|
262
|
-
from gssw.common import addLoggingLevel
|
|
263
|
-
from gssw.hal.hal import Hal
|
|
264
|
-
from gssw.hal.halclient import HalClient
|
|
265
|
-
|
|
266
|
-
logger.debug('Initalizing BeagleBone Black Heater Controller')
|
|
267
|
-
|
|
268
|
-
configClient = ConfigClient(os.getenv('GSSW_CONFIGURATION_FILE'))
|
|
269
|
-
self.config = configClient.config
|
|
270
|
-
addLoggingLevel('data', 15)
|
|
271
|
-
|
|
272
|
-
with ConfigurationManagerProxy() as cm:
|
|
273
|
-
setup = cm.get_setup()
|
|
274
|
-
|
|
275
|
-
self._availability = setup.gse.beaglebone_heater.availability
|
|
276
|
-
self._active = [False] * len(self._availability)
|
|
277
|
-
|
|
278
|
-
self.hal = Hal()
|
|
279
|
-
hal_client = HalClient(self.hal, self.config)
|
|
280
|
-
hal_client.requestHal()
|
|
281
|
-
|
|
282
|
-
self.heaters = {}
|
|
283
|
-
|
|
284
|
-
for htr, available in enumerate(self._availability):
|
|
285
|
-
if available:
|
|
286
|
-
self.heaters[htr] = BeagleboneHeater(htr, self.config, self.hal)
|
|
287
|
-
|
|
288
|
-
def is_simulator(self):
|
|
289
|
-
return False
|
|
290
|
-
|
|
291
|
-
def is_connected(self):
|
|
292
|
-
return all([heater.connected for heater in self.heaters.values()])
|
|
293
|
-
|
|
294
|
-
def connect(self):
|
|
295
|
-
for heater in self.heaters.values():
|
|
296
|
-
heater.connect()
|
|
297
|
-
|
|
298
|
-
def disconnect(self):
|
|
299
|
-
for heater in self.heaters.values():
|
|
300
|
-
heater.disconnect()
|
|
301
|
-
|
|
302
|
-
def reconnect(self):
|
|
303
|
-
for heater in self.heaters.values():
|
|
304
|
-
heater.disconnect()
|
|
305
|
-
heater.connect()
|
|
306
|
-
|
|
307
|
-
def connect_beaglebone(self, device):
|
|
308
|
-
self.heaters[device].connect()
|
|
309
|
-
|
|
310
|
-
def set_enable(self, dev_idx, chnl_idx, enable):
|
|
311
|
-
self.heaters[dev_idx].set_enable(chnl_idx, enable)
|
|
312
|
-
|
|
313
|
-
def set_duty_cycle(self, dev_idx, chnl_idx, duty_cycle):
|
|
314
|
-
self.heaters[dev_idx].set_duty_cycle(chnl_idx, duty_cycle)
|
|
315
|
-
|
|
316
|
-
def set_period(self, dev_idx, chnl_idx, period):
|
|
317
|
-
self.heaters[dev_idx].set_period(chnl_idx, period)
|
|
318
|
-
|
|
319
|
-
def get_temperature(self, dev_idx):
|
|
320
|
-
return self.heaters[dev_idx].temperature
|
|
321
|
-
|
|
322
|
-
def get_voltage(self, dev_idx, chnl_idx):
|
|
323
|
-
return self.heaters[dev_idx].get_voltage(chnl_idx)
|
|
324
|
-
|
|
325
|
-
def get_current(self, dev_idx, chnl_idx):
|
|
326
|
-
return self.heaters[dev_idx].get_current(chnl_idx)
|
|
327
|
-
|
|
328
|
-
def get_power(self, dev_idx, chnl_idx):
|
|
329
|
-
return self.heaters[dev_idx].get_power(chnl_idx)
|
|
330
|
-
|
|
331
|
-
def get_enable(self, dev_idx, chnl_idx):
|
|
332
|
-
return self.heaters[dev_idx].get_enable(chnl_idx)
|
|
333
|
-
|
|
334
|
-
def get_duty_cycle(self, dev_idx, chnl_idx):
|
|
335
|
-
return self.heaters[dev_idx].get_duty_cycle(chnl_idx)
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
class BeagleboneProxy(Proxy, BeagleboneInterface):
|
|
339
|
-
def __init__(self, protocol=CTRL_SETTINGS.PROTOCOL,
|
|
340
|
-
hostname=CTRL_SETTINGS.HOSTNAME,
|
|
341
|
-
port=CTRL_SETTINGS.COMMANDING_PORT):
|
|
342
|
-
super().__init__(connect_address(protocol, hostname, port))
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
BaseClass:
|
|
2
|
-
egse.tempcontrol.beaglebone.BeagleboneInterface
|
|
3
|
-
|
|
4
|
-
ProxyClass:
|
|
5
|
-
egse.tempcontrol.beaglebone.BeagleboneProxy
|
|
6
|
-
|
|
7
|
-
ControlServerClass:
|
|
8
|
-
egse.tempcontrol.beaglebone.BeagleboneControlServer
|
|
9
|
-
|
|
10
|
-
ControlServer:
|
|
11
|
-
egse.tempcontrol.beaglebone.beaglebone_cs
|
|
12
|
-
|
|
13
|
-
UserInterface:
|
|
14
|
-
egse.tempcontrol.beaglebone.beaglebone_ui
|
|
15
|
-
|
|
16
|
-
Commands:
|
|
17
|
-
|
|
18
|
-
# Definition of the DeviceInterface.
|
|
19
|
-
|
|
20
|
-
disconnect:
|
|
21
|
-
description: Disconnect from the PWM Controller.
|
|
22
|
-
|
|
23
|
-
connect:
|
|
24
|
-
description: Connect to the PWM Controller.
|
|
25
|
-
|
|
26
|
-
reconnect:
|
|
27
|
-
description: Reconnect to the PWM Controller.
|
|
28
|
-
|
|
29
|
-
is_simulator:
|
|
30
|
-
description: Ask if the control server is a simulator.
|
|
31
|
-
returns: bool | True if far end is a simulator.
|
|
32
|
-
|
|
33
|
-
is_connected:
|
|
34
|
-
description: Check if PWM Controller is connected.
|
|
35
|
-
|
|
36
|
-
# Definition of the device commands.
|
|
37
|
-
set_enable:
|
|
38
|
-
description: Enable PWM pin.
|
|
39
|
-
args:
|
|
40
|
-
dev_idx: int | Device index.
|
|
41
|
-
chnl_idx: int | Channel index.
|
|
42
|
-
enable: bool | Enable PWM pin.
|
|
43
|
-
cmd: "{dev_idx}{pin_number}{enable}"
|
|
44
|
-
|
|
45
|
-
set_duty_cycle:
|
|
46
|
-
description: Duty cycle duration in ns.
|
|
47
|
-
args:
|
|
48
|
-
dev_idx: int | Device index.
|
|
49
|
-
chnl_idx: int | Channel index.
|
|
50
|
-
duty_cycle: int | Duty cycle.
|
|
51
|
-
cmd: "{dev_idx}{pin_number}{duty_cycle}"
|
|
52
|
-
|
|
53
|
-
set_period:
|
|
54
|
-
description: Period duration in ns.
|
|
55
|
-
args:
|
|
56
|
-
dev_idx: int | Device index.
|
|
57
|
-
chnl_idx: int | Channel index.
|
|
58
|
-
period: int | Period.
|
|
59
|
-
cmd: "{dev_idx}{pin_number}{period}"
|
|
60
|
-
|
|
61
|
-
get_temperature:
|
|
62
|
-
description: Get board temperature.
|
|
63
|
-
args:
|
|
64
|
-
dev_idx: int | Device index.
|
|
65
|
-
cmd: "{dev_idx}"
|
|
66
|
-
returns: float | Temperature dgrC
|
|
67
|
-
|
|
68
|
-
get_voltage:
|
|
69
|
-
description: Get channel voltage.
|
|
70
|
-
args:
|
|
71
|
-
dev_idx: int | Device index.
|
|
72
|
-
chnl_idx: int | Channel index.
|
|
73
|
-
cmd: "{dev_idx}{chnl_idx}"
|
|
74
|
-
returns: float | Voltage V
|
|
75
|
-
|
|
76
|
-
get_current:
|
|
77
|
-
description: Get channel current.
|
|
78
|
-
args:
|
|
79
|
-
dev_idx: int | Device index.
|
|
80
|
-
chnl_idx: int | Channel index.
|
|
81
|
-
cmd: "{dev_idx}{chnl_idx}"
|
|
82
|
-
returns: float | Current A
|
|
83
|
-
|
|
84
|
-
get_power:
|
|
85
|
-
description: Get channel power.
|
|
86
|
-
args:
|
|
87
|
-
dev_idx: int | Device index.
|
|
88
|
-
chnl_idx: int | Channel index.
|
|
89
|
-
cmd: "{dev_idx}{chnl_idx}"
|
|
90
|
-
returns: float | Power W
|
|
91
|
-
|
|
92
|
-
get_enable:
|
|
93
|
-
description: Get channel state
|
|
94
|
-
args:
|
|
95
|
-
dev_idx: int | Device index.
|
|
96
|
-
chnl_idx: int | Channel index.
|
|
97
|
-
cmd: "{dev_idx}{chnl_idx}"
|
|
98
|
-
returns: bool | state
|
|
99
|
-
|
|
100
|
-
get_duty_cycle:
|
|
101
|
-
description: Get channel duty cycle.
|
|
102
|
-
args:
|
|
103
|
-
dev_idx: int | Device index.
|
|
104
|
-
chnl_idx: int | Channel index.
|
|
105
|
-
cmd: "{dev_idx}{chnl_idx}"
|
|
106
|
-
returns: int | duty cycle in ns
|
|
107
|
-
|
|
108
|
-
connect_beaglebone:
|
|
109
|
-
description:
|
|
110
|
-
cmd: "{device}"
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
# Control server for the BeagleBone Black heater controller
|
|
2
|
-
|
|
3
|
-
import click
|
|
4
|
-
import logging
|
|
5
|
-
import sys
|
|
6
|
-
|
|
7
|
-
import zmq
|
|
8
|
-
from prometheus_client import start_http_server
|
|
9
|
-
|
|
10
|
-
from egse.control import ControlServer
|
|
11
|
-
from egse.settings import Settings
|
|
12
|
-
from egse.tempcontrol.beaglebone.beaglebone_protocol import BeagleboneProtocol
|
|
13
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
|
|
14
|
-
|
|
15
|
-
logging.basicConfig(level=logging.DEBUG, format=Settings.LOG_FORMAT_FULL)
|
|
16
|
-
|
|
17
|
-
logger = logging.getLogger('BeagleBone Heater')
|
|
18
|
-
|
|
19
|
-
CTRL_SETTINGS = Settings.load("BeagleBone Heater Control Server")
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class BeagleBoneControlServer(ControlServer):
|
|
23
|
-
|
|
24
|
-
def __init__(self):
|
|
25
|
-
super().__init__()
|
|
26
|
-
|
|
27
|
-
self.device_protocol = BeagleboneProtocol(self)
|
|
28
|
-
|
|
29
|
-
self.logger.debug(f'Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}')
|
|
30
|
-
|
|
31
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
32
|
-
|
|
33
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
34
|
-
|
|
35
|
-
self.set_delay(5)
|
|
36
|
-
|
|
37
|
-
self.set_hk_delay(CTRL_SETTINGS.DELAY)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
def get_communication_protocol(self):
|
|
41
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
42
|
-
|
|
43
|
-
def get_commanding_port(self):
|
|
44
|
-
return CTRL_SETTINGS.COMMANDING_PORT
|
|
45
|
-
|
|
46
|
-
def get_service_port(self):
|
|
47
|
-
return CTRL_SETTINGS.SERVICE_PORT
|
|
48
|
-
|
|
49
|
-
def get_monitoring_port(self):
|
|
50
|
-
return CTRL_SETTINGS.MONITORING_PORT
|
|
51
|
-
|
|
52
|
-
def get_storage_mnemonic(self):
|
|
53
|
-
try:
|
|
54
|
-
return CTRL_SETTINGS.STORAGE_MNEMONIC
|
|
55
|
-
except:
|
|
56
|
-
return 'BB_HEATERS'
|
|
57
|
-
|
|
58
|
-
def before_serve(self):
|
|
59
|
-
start_http_server(CTRL_SETTINGS.METRICS_PORT)
|
|
60
|
-
|
|
61
|
-
# def after_serve(self):
|
|
62
|
-
# for idx, dev in enumerate(self.device_protocol.beaglebone.beaglebone.dev_gpio_names):
|
|
63
|
-
# self.device_protocol.beaglebone.beaglebone._dev_gpio[idx].socket.close()
|
|
64
|
-
|
|
65
|
-
# for idx, dev in enumerate(self.device_protocol.beaglebone.beaglebone.dev_pwm_names):
|
|
66
|
-
# self.device_protocol.beaglebone.beaglebone._dev_pwm[idx].socket.close()
|
|
67
|
-
|
|
68
|
-
# for idx, dev in enumerate(self.device_protocol.beaglebone.beaglebone.dev_i2c_names):
|
|
69
|
-
# self.device_protocol.beaglebone.beaglebone._dev_i2c[idx].socket.close()
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
@click.group()
|
|
73
|
-
def cli():
|
|
74
|
-
pass
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
@cli.command()
|
|
78
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the BeagleBone Simulator as the backend.")
|
|
79
|
-
def start(simulator):
|
|
80
|
-
"""Start the BeagleBone Control Server."""
|
|
81
|
-
|
|
82
|
-
if simulator:
|
|
83
|
-
Settings.set_simulation_mode(True)
|
|
84
|
-
try:
|
|
85
|
-
control_server = BeagleBoneControlServer()
|
|
86
|
-
control_server.serve()
|
|
87
|
-
|
|
88
|
-
except KeyboardInterrupt:
|
|
89
|
-
logger.info("Shutdown requested...exiting")
|
|
90
|
-
|
|
91
|
-
except SystemExit as exit_code:
|
|
92
|
-
logger.info("System Exit with code {}.".format(exit_code))
|
|
93
|
-
sys.exit(exit_code)
|
|
94
|
-
|
|
95
|
-
except Exception:
|
|
96
|
-
|
|
97
|
-
logger.exception("Cannot start the BeagleBone Control Server")
|
|
98
|
-
# The above line does exactly the same as the traceback, but on the logger
|
|
99
|
-
# import traceback
|
|
100
|
-
# traceback.print_exc(file=sys.stdout)
|
|
101
|
-
|
|
102
|
-
return 0
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
@cli.command()
|
|
106
|
-
def stop():
|
|
107
|
-
"""Send a 'quit_server' command to the Control Server."""
|
|
108
|
-
|
|
109
|
-
with BeagleboneProxy() as proxy:
|
|
110
|
-
|
|
111
|
-
sp = proxy.get_service_proxy()
|
|
112
|
-
sp.quit_server()
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if __name__ == "__main__":
|
|
116
|
-
|
|
117
|
-
sys.exit(cli())
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import time
|
|
3
|
-
|
|
4
|
-
from prometheus_client import Gauge
|
|
5
|
-
|
|
6
|
-
from egse.control import ControlServer
|
|
7
|
-
from egse.protocol import CommandProtocol
|
|
8
|
-
from egse.settings import Settings
|
|
9
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneHeaterController
|
|
10
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneInterface
|
|
11
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneSimulator
|
|
12
|
-
from egse.tempcontrol.beaglebone.beaglebone import BeagleboneCommand
|
|
13
|
-
from egse.system import format_datetime
|
|
14
|
-
from egse.zmq_ser import bind_address
|
|
15
|
-
|
|
16
|
-
COMMAND_SETTINGS = Settings.load(filename='beaglebone.yaml')
|
|
17
|
-
|
|
18
|
-
logger = logging.getLogger(__name__)
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class BeagleboneProtocol(CommandProtocol):
|
|
22
|
-
|
|
23
|
-
from gssw.lib.errors import GsswTimeoutError, PeerException, CommunicationError
|
|
24
|
-
|
|
25
|
-
def __init__(self, control_server:ControlServer):
|
|
26
|
-
super().__init__()
|
|
27
|
-
|
|
28
|
-
self.control_server = control_server
|
|
29
|
-
|
|
30
|
-
if Settings.simulation_mode():
|
|
31
|
-
self.beaglebone = BeagleboneSimulator()
|
|
32
|
-
self._num_dev = 6
|
|
33
|
-
else:
|
|
34
|
-
self.beaglebone = BeagleboneHeaterController()
|
|
35
|
-
self._num_dev = len(self.beaglebone.heaters)
|
|
36
|
-
|
|
37
|
-
self.temperature_gauges = [Gauge(f'GSRON_HTR_TEMP_{device}', '') for device in range(self._num_dev)]
|
|
38
|
-
self.current_gauges = [[Gauge(f"GSRON_HTR_I_{device}_{channel}", '') for channel in range(4)] for device in range(self._num_dev)]
|
|
39
|
-
self.voltage_gauges = [[Gauge(f"GSRON_HTR_V_{device}_{channel}", '') for channel in range(4)] for device in range(self._num_dev)]
|
|
40
|
-
self.resistance_gauges = [[Gauge(f"GSRON_HTR_R_{device}_{channel}", '') for channel in range(4)] for device in range(self._num_dev)]
|
|
41
|
-
self.power_gauges = [[Gauge(f"GSRON_HTR_P_{device}_{channel}", '') for channel in range(4)] for device in range(self._num_dev)]
|
|
42
|
-
|
|
43
|
-
self.valid_hk = [True] * self._num_dev
|
|
44
|
-
self.valid_status = [True] * self._num_dev
|
|
45
|
-
|
|
46
|
-
self.load_commands(COMMAND_SETTINGS.Commands, BeagleboneCommand, BeagleboneInterface)
|
|
47
|
-
|
|
48
|
-
self.build_device_method_lookup_table(self.beaglebone)
|
|
49
|
-
|
|
50
|
-
def get_bind_address(self):
|
|
51
|
-
return bind_address(self.control_server.get_communication_protocol(),
|
|
52
|
-
self.control_server.get_commanding_port())
|
|
53
|
-
|
|
54
|
-
def get_status(self):
|
|
55
|
-
status_info = super().get_status()
|
|
56
|
-
|
|
57
|
-
htr_connected = [False] * self._num_dev
|
|
58
|
-
htr_enabled = [[] * 4] * self._num_dev
|
|
59
|
-
htr_cycle = [[] * 4] * self._num_dev
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
for i, heater in enumerate(self.beaglebone.heaters.values()):
|
|
63
|
-
|
|
64
|
-
enabled = []
|
|
65
|
-
duty_cycle = []
|
|
66
|
-
|
|
67
|
-
if heater.connected:
|
|
68
|
-
try:
|
|
69
|
-
for channel in range(4):
|
|
70
|
-
enabled.append(heater.get_enable(channel))
|
|
71
|
-
duty_cycle.append(heater.get_duty_cycle(channel))
|
|
72
|
-
|
|
73
|
-
htr_connected[i] = True
|
|
74
|
-
except self.CommunicationError as ex:
|
|
75
|
-
logger.error("Could not connect to heater %s: %s", i, ex)
|
|
76
|
-
heater.disconnected()
|
|
77
|
-
except self.PeerException as ex:
|
|
78
|
-
logger.warning("Could not retrieve housekeeping from heater %s: %s", i, ex)
|
|
79
|
-
|
|
80
|
-
if not heater.connected:
|
|
81
|
-
for channel in range(4):
|
|
82
|
-
enabled.append(False)
|
|
83
|
-
duty_cycle.append(0.0)
|
|
84
|
-
|
|
85
|
-
htr_enabled[i] = enabled
|
|
86
|
-
htr_cycle[i] = duty_cycle
|
|
87
|
-
|
|
88
|
-
status_info['Connected'] = htr_connected
|
|
89
|
-
status_info['Enabled'] = htr_enabled
|
|
90
|
-
status_info['duty_cycle'] = htr_cycle
|
|
91
|
-
|
|
92
|
-
return status_info
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
def get_housekeeping(self) -> dict:
|
|
96
|
-
|
|
97
|
-
hk_dict = {'timestamp': format_datetime()}
|
|
98
|
-
|
|
99
|
-
for i, heater in enumerate(self.beaglebone.heaters.values()):
|
|
100
|
-
if heater.connected:
|
|
101
|
-
try:
|
|
102
|
-
hk_dict[f'GSRON_HTR_TEMP_{i}'] = heater.temperature
|
|
103
|
-
|
|
104
|
-
for channel in range(4):
|
|
105
|
-
hk_dict[f"GSRON_HTR_V_{i}_{channel}"] = heater.get_voltage(channel)
|
|
106
|
-
hk_dict[f"GSRON_HTR_I_{i}_{channel}"] = heater.get_current(channel)
|
|
107
|
-
|
|
108
|
-
hk_dict[f"GSRON_HTR_R_{i}_{channel}"] = hk_dict[f"GSRON_HTR_V_{i}_{channel}"] / hk_dict[f"GSRON_HTR_I_{i}_{channel}"] \
|
|
109
|
-
if hk_dict[f"GSRON_HTR_I_{i}_{channel}"] else 0
|
|
110
|
-
hk_dict[f"GSRON_HTR_P_{i}_{channel}"] = hk_dict[f"GSRON_HTR_V_{i}_{channel}"] * hk_dict[f"GSRON_HTR_I_{i}_{channel}"]
|
|
111
|
-
except self.GsswTimeoutError as ex:
|
|
112
|
-
logger.error("Could not connect with Beaglebone heater %s: %s", i, ex)
|
|
113
|
-
heater.disconnected()
|
|
114
|
-
except self.PeerException as ex:
|
|
115
|
-
logger.warning("Could not retrieve housekeeping from heater %s: %s", i, ex)
|
|
116
|
-
heater.disconnected()
|
|
117
|
-
|
|
118
|
-
if not heater.connected:
|
|
119
|
-
hk_dict[f'GSRON_HTR_TEMP_{i}'] = 0.0
|
|
120
|
-
|
|
121
|
-
for channel in range(4):
|
|
122
|
-
hk_dict[f"GSRON_HTR_V_{i}_{channel}"] = 0.0
|
|
123
|
-
hk_dict[f"GSRON_HTR_I_{i}_{channel}"] = 0.0
|
|
124
|
-
hk_dict[f"GSRON_HTR_R_{i}_{channel}"] = 0.0
|
|
125
|
-
hk_dict[f"GSRON_HTR_P_{i}_{channel}"] = 0.0
|
|
126
|
-
|
|
127
|
-
self.temperature_gauges[i].set(hk_dict[f'GSRON_HTR_TEMP_{i}'])
|
|
128
|
-
|
|
129
|
-
for channel in range(4):
|
|
130
|
-
self.voltage_gauges[i][channel].set(hk_dict[f"GSRON_HTR_V_{i}_{channel}"])
|
|
131
|
-
self.current_gauges[i][channel].set(hk_dict[f"GSRON_HTR_I_{i}_{channel}"])
|
|
132
|
-
self.resistance_gauges[i][channel].set(hk_dict[f"GSRON_HTR_R_{i}_{channel}"])
|
|
133
|
-
self.power_gauges[i][channel].set(hk_dict[f"GSRON_HTR_P_{i}_{channel}"])
|
|
134
|
-
|
|
135
|
-
return hk_dict
|