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
egse/ups/apc/apc.py
DELETED
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import socket
|
|
3
|
-
from collections import OrderedDict
|
|
4
|
-
|
|
5
|
-
from egse.decorators import dynamic_interface
|
|
6
|
-
from egse.device import DeviceInterface
|
|
7
|
-
from egse.proxy import Proxy
|
|
8
|
-
from egse.settings import Settings
|
|
9
|
-
from egse.zmq_ser import connect_address
|
|
10
|
-
from egse.command import ClientServerCommand
|
|
11
|
-
|
|
12
|
-
logger = logging.getLogger(__name__)
|
|
13
|
-
|
|
14
|
-
CTRL_SETTINGS = Settings.load("APC Control Server")
|
|
15
|
-
DEVICE_SETTINGS = Settings.load(filename='apc.yaml')
|
|
16
|
-
|
|
17
|
-
CMD_STATUS = "\x00\x06status".encode()
|
|
18
|
-
EOF = " \n\x00\x00"
|
|
19
|
-
SEP = ":"
|
|
20
|
-
BUFFER_SIZE = 1024
|
|
21
|
-
ALL_UNITS = (
|
|
22
|
-
"Minutes",
|
|
23
|
-
"Seconds",
|
|
24
|
-
"Percent",
|
|
25
|
-
"Volts",
|
|
26
|
-
"Watts",
|
|
27
|
-
"Amps",
|
|
28
|
-
"Hz",
|
|
29
|
-
"C",
|
|
30
|
-
"VA",
|
|
31
|
-
"Percent Load Capacity"
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
class APCError(Exception):
|
|
35
|
-
pass
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class APCCommand(ClientServerCommand):
|
|
39
|
-
def get_cmd_string(self, *args, **kwargs):
|
|
40
|
-
out = super().get_cmd_string(*args, **kwargs)
|
|
41
|
-
return out + '\n'
|
|
42
|
-
|
|
43
|
-
class APCInterface(DeviceInterface):
|
|
44
|
-
""" APC base class."""
|
|
45
|
-
|
|
46
|
-
@dynamic_interface
|
|
47
|
-
def get_bcharge(self):
|
|
48
|
-
""" Battery charge. """
|
|
49
|
-
return NotImplemented
|
|
50
|
-
|
|
51
|
-
@dynamic_interface
|
|
52
|
-
def get_onbatt(self):
|
|
53
|
-
""" On battery power. """
|
|
54
|
-
return NotImplemented
|
|
55
|
-
|
|
56
|
-
@dynamic_interface
|
|
57
|
-
def get_timeleft(self):
|
|
58
|
-
""" Timeleft when on battery. """
|
|
59
|
-
return NotImplemented
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
class APCSimulator(APCInterface):
|
|
63
|
-
""" APC simulator class. """
|
|
64
|
-
|
|
65
|
-
def __init__(self):
|
|
66
|
-
self._is_connected = True
|
|
67
|
-
|
|
68
|
-
def is_connected(self):
|
|
69
|
-
return self._is_connected
|
|
70
|
-
|
|
71
|
-
def is_simulator(self):
|
|
72
|
-
return True
|
|
73
|
-
|
|
74
|
-
def connect(self):
|
|
75
|
-
self._is_connected = True
|
|
76
|
-
|
|
77
|
-
def disconnect(self):
|
|
78
|
-
self._is_connected = False
|
|
79
|
-
|
|
80
|
-
def reconnect(self):
|
|
81
|
-
if self.is_connected():
|
|
82
|
-
self.disconnect()
|
|
83
|
-
self.connect()
|
|
84
|
-
|
|
85
|
-
def get_bcharge(self):
|
|
86
|
-
return 90.0
|
|
87
|
-
|
|
88
|
-
def get_onbatt(self):
|
|
89
|
-
return False
|
|
90
|
-
|
|
91
|
-
def get_timeleft(self):
|
|
92
|
-
return 1000.0
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
class APCController(APCInterface):
|
|
96
|
-
|
|
97
|
-
def __init__(self):
|
|
98
|
-
super().__init__()
|
|
99
|
-
self._is_connected = True
|
|
100
|
-
|
|
101
|
-
def is_simulator(self):
|
|
102
|
-
return False
|
|
103
|
-
|
|
104
|
-
def is_connected(self):
|
|
105
|
-
return self._is_connected
|
|
106
|
-
|
|
107
|
-
def connect(self):
|
|
108
|
-
self._is_connected = True
|
|
109
|
-
|
|
110
|
-
def disconnect(self):
|
|
111
|
-
self._is_connected = False
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
def reconnect(self):
|
|
115
|
-
self._is_connected = True
|
|
116
|
-
|
|
117
|
-
def get_linev(self):
|
|
118
|
-
dct = self._parse(self._get(), True)
|
|
119
|
-
return float(dct['LINEV'])
|
|
120
|
-
|
|
121
|
-
def get_loadpct(self):
|
|
122
|
-
dct = self._parse(self._get(), True)
|
|
123
|
-
return float(dct['LOADPCT'])
|
|
124
|
-
|
|
125
|
-
def get_bcharge(self):
|
|
126
|
-
dct = self._parse(self._get(), True)
|
|
127
|
-
return float(dct['BCHARGE'])
|
|
128
|
-
|
|
129
|
-
def get_timeleft(self):
|
|
130
|
-
dct = self._parse(self._get(), True)
|
|
131
|
-
return float(dct['TIMELEFT'])
|
|
132
|
-
|
|
133
|
-
def get_onbatt(self):
|
|
134
|
-
dct = self._parse(self._get(), True)
|
|
135
|
-
return 'ONBATT' in dct['STATUS']
|
|
136
|
-
|
|
137
|
-
def get_mbattchg(self):
|
|
138
|
-
dct = self._parse(self._get(), True)
|
|
139
|
-
return float(dct['MBATTCHG'])
|
|
140
|
-
|
|
141
|
-
def get_mintimel(self):
|
|
142
|
-
dct = self._parse(self._get(), True)
|
|
143
|
-
return float(dct['MINTIMEL'])
|
|
144
|
-
|
|
145
|
-
def get_maxtime(self):
|
|
146
|
-
dct = self._parse(self._get(), True)
|
|
147
|
-
return float(dct['MAXTIME'])
|
|
148
|
-
|
|
149
|
-
def get_maxlinev(self):
|
|
150
|
-
dct = self._parse(self._get(), True)
|
|
151
|
-
return float(dct['MAXLINEV'])
|
|
152
|
-
|
|
153
|
-
def get_minlinev(self):
|
|
154
|
-
dct = self._parse(self._get(), True)
|
|
155
|
-
return float(dct['MINLINEV'])
|
|
156
|
-
|
|
157
|
-
def get_outputv(self):
|
|
158
|
-
dct = self._parse(self._get(), True)
|
|
159
|
-
return float(dct['OUTPUTV'])
|
|
160
|
-
|
|
161
|
-
def get_dlowbatt(self):
|
|
162
|
-
dct = self._parse(self._get(), True)
|
|
163
|
-
return float(dct['DLOWBATT'])
|
|
164
|
-
|
|
165
|
-
def get_lotrans(self):
|
|
166
|
-
dct = self._parse(self._get(), True)
|
|
167
|
-
return float(dct['LOTRANS'])
|
|
168
|
-
|
|
169
|
-
def get_hitrans(self):
|
|
170
|
-
dct = self._parse(self._get(), True)
|
|
171
|
-
return float(dct['HITRANS'])
|
|
172
|
-
|
|
173
|
-
def get_itemp(self):
|
|
174
|
-
dct = self._parse(self._get(), True)
|
|
175
|
-
return float(dct['ITEMP'])
|
|
176
|
-
|
|
177
|
-
def get_alarmdel(self):
|
|
178
|
-
dct = self._parse(self._get(), True)
|
|
179
|
-
return float(dct['ALARMDEL'])
|
|
180
|
-
|
|
181
|
-
def get_status_dict(self):
|
|
182
|
-
return self._parse(self._get(), True)
|
|
183
|
-
|
|
184
|
-
def _get(self, host="localhost", port=3551, timeout=30):
|
|
185
|
-
"""
|
|
186
|
-
Connect to the APCUPSd NIS and request its status.
|
|
187
|
-
"""
|
|
188
|
-
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
|
189
|
-
sock.settimeout(timeout)
|
|
190
|
-
sock.connect((host, port))
|
|
191
|
-
sock.send(CMD_STATUS)
|
|
192
|
-
buffr = ""
|
|
193
|
-
while not buffr.endswith(EOF):
|
|
194
|
-
buffr += sock.recv(BUFFER_SIZE).decode()
|
|
195
|
-
sock.close()
|
|
196
|
-
return buffr
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
def _split(self, raw_status):
|
|
200
|
-
"""
|
|
201
|
-
Split the output from get_status() into lines, removing the length and
|
|
202
|
-
newline chars.
|
|
203
|
-
"""
|
|
204
|
-
# Remove the EOF string, split status on the line endings (\x00), strip the
|
|
205
|
-
# length byte and newline chars off the beginning and end respectively.
|
|
206
|
-
return [x[1:-1] for x in raw_status[:-len(EOF)].split("\x00") if x]
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
def _parse(self, raw_status, strip_units=False):
|
|
210
|
-
"""
|
|
211
|
-
Split the output from get_status() into lines, clean it up and return it as
|
|
212
|
-
an OrderedDict.
|
|
213
|
-
"""
|
|
214
|
-
lines = self._split(raw_status)
|
|
215
|
-
if strip_units:
|
|
216
|
-
lines = self._strip_units_from_lines(lines)
|
|
217
|
-
# Split each line on the SEP character, strip extraneous whitespace and
|
|
218
|
-
# create an OrderedDict out of the keys/values.
|
|
219
|
-
return OrderedDict([[x.strip() for x in x.split(SEP, 1)] for x in lines])
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
def _strip_units_from_lines(self, lines):
|
|
223
|
-
"""
|
|
224
|
-
Removes all units from the ends of the lines.
|
|
225
|
-
"""
|
|
226
|
-
for line in lines:
|
|
227
|
-
for unit in ALL_UNITS:
|
|
228
|
-
if line.endswith(" %s" % unit):
|
|
229
|
-
line = line[:-1-len(unit)]
|
|
230
|
-
yield line
|
|
231
|
-
|
|
232
|
-
class APCProxy(Proxy, APCInterface):
|
|
233
|
-
def __init__(self, protocol=CTRL_SETTINGS.PROTOCOL,
|
|
234
|
-
hostname=CTRL_SETTINGS.HOSTNAME,
|
|
235
|
-
port=CTRL_SETTINGS.COMMANDING_PORT):
|
|
236
|
-
super().__init__(connect_address(protocol, hostname, port))
|
egse/ups/apc/apc.yaml
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
BaseClass:
|
|
2
|
-
egse.ups.apc.APCInterface
|
|
3
|
-
|
|
4
|
-
ProxyClass:
|
|
5
|
-
egse.ups.apc.APCProxy
|
|
6
|
-
|
|
7
|
-
ControlServerClass:
|
|
8
|
-
egse.ups.apc.APControlServer
|
|
9
|
-
|
|
10
|
-
ControlServer:
|
|
11
|
-
egse.ups.apc.apc_cs
|
|
12
|
-
|
|
13
|
-
Commands:
|
|
14
|
-
|
|
15
|
-
# Definition of the DeviceInterface.
|
|
16
|
-
|
|
17
|
-
disconnect:
|
|
18
|
-
description: Disconnect from the APC Controller.
|
|
19
|
-
|
|
20
|
-
connect:
|
|
21
|
-
description: Connect to the APC Controller.
|
|
22
|
-
|
|
23
|
-
reconnect:
|
|
24
|
-
description: Reconnect to the APC Controller.
|
|
25
|
-
|
|
26
|
-
is_simulator:
|
|
27
|
-
description: Ask if the control server is a simulator.
|
|
28
|
-
returns: bool | True if far end is a simulator.
|
|
29
|
-
|
|
30
|
-
is_connected:
|
|
31
|
-
description: Check if APC Controller is connected.
|
|
32
|
-
|
|
33
|
-
# Definition of the device commands.
|
|
34
|
-
get_bcharge:
|
|
35
|
-
description: Battery charge.
|
|
36
|
-
returns: float | Percentage battery charge
|
|
37
|
-
|
|
38
|
-
get_onbatt:
|
|
39
|
-
description: On battery power.
|
|
40
|
-
returns: bool | On battery power
|
|
41
|
-
|
|
42
|
-
get_timeleft:
|
|
43
|
-
description: Time left when on battery.
|
|
44
|
-
returns: float | Time left in minutes.
|
|
45
|
-
|
egse/ups/apc/apc_cs.py
DELETED
|
@@ -1,101 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
import click
|
|
3
|
-
import logging
|
|
4
|
-
import sys
|
|
5
|
-
|
|
6
|
-
import zmq
|
|
7
|
-
from prometheus_client import start_http_server
|
|
8
|
-
|
|
9
|
-
from egse.control import ControlServer
|
|
10
|
-
from egse.settings import Settings
|
|
11
|
-
from egse.ups.apc.apc_protocol import APCProtocol
|
|
12
|
-
from egse.ups.apc.apc import APCProxy
|
|
13
|
-
|
|
14
|
-
logging.basicConfig(level=logging.DEBUG, format=Settings.LOG_FORMAT_FULL)
|
|
15
|
-
|
|
16
|
-
logger = logging.getLogger(__name__)
|
|
17
|
-
|
|
18
|
-
CTRL_SETTINGS = Settings.load("APC Control Server")
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class APCControlServer(ControlServer):
|
|
22
|
-
|
|
23
|
-
def __init__(self):
|
|
24
|
-
super().__init__()
|
|
25
|
-
|
|
26
|
-
self.device_protocol = APCProtocol(self)
|
|
27
|
-
|
|
28
|
-
self.logger.debug(f'Binding ZeroMQ socket to {self.device_protocol.get_bind_address()}')
|
|
29
|
-
|
|
30
|
-
self.device_protocol.bind(self.dev_ctrl_cmd_sock)
|
|
31
|
-
|
|
32
|
-
self.poller.register(self.dev_ctrl_cmd_sock, zmq.POLLIN)
|
|
33
|
-
|
|
34
|
-
def get_communication_protocol(self):
|
|
35
|
-
return CTRL_SETTINGS.PROTOCOL
|
|
36
|
-
|
|
37
|
-
def get_commanding_port(self):
|
|
38
|
-
return CTRL_SETTINGS.COMMANDING_PORT
|
|
39
|
-
|
|
40
|
-
def get_service_port(self):
|
|
41
|
-
return CTRL_SETTINGS.SERVICE_PORT
|
|
42
|
-
|
|
43
|
-
def get_monitoring_port(self):
|
|
44
|
-
return CTRL_SETTINGS.MONITORING_PORT
|
|
45
|
-
|
|
46
|
-
def get_storage_mnemonic(self):
|
|
47
|
-
try:
|
|
48
|
-
return CTRL_SETTINGS.STORAGE_MNEMONIC
|
|
49
|
-
except:
|
|
50
|
-
return 'APC'
|
|
51
|
-
|
|
52
|
-
def before_serve(self):
|
|
53
|
-
start_http_server(CTRL_SETTINGS.METRICS_PORT)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
@click.group()
|
|
57
|
-
def cli():
|
|
58
|
-
pass
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
@cli.command()
|
|
62
|
-
@click.option("--simulator", "--sim", is_flag=True, help="Start the APC Simulator as the backend.")
|
|
63
|
-
def start(simulator):
|
|
64
|
-
"""Start the APC Control Server."""
|
|
65
|
-
|
|
66
|
-
# if simulator:
|
|
67
|
-
# Settings.set_simulation_mode(True)
|
|
68
|
-
try:
|
|
69
|
-
controller = APCControlServer()
|
|
70
|
-
controller.serve()
|
|
71
|
-
|
|
72
|
-
except KeyboardInterrupt:
|
|
73
|
-
print("Shutdown requested...exiting")
|
|
74
|
-
|
|
75
|
-
except SystemExit as exit_code:
|
|
76
|
-
print("System Exit with code {}.".format(exit_code))
|
|
77
|
-
sys.exit(exit_code)
|
|
78
|
-
|
|
79
|
-
except Exception:
|
|
80
|
-
|
|
81
|
-
logger.exception("Cannot start the APC Control Server")
|
|
82
|
-
# The above line does exactly the same as the traceback, but on the logger
|
|
83
|
-
# import traceback
|
|
84
|
-
# traceback.print_exc(file=sys.stdout)
|
|
85
|
-
|
|
86
|
-
return 0
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
@cli.command()
|
|
90
|
-
def stop():
|
|
91
|
-
"""Send a 'quit_server' command to the Control Server."""
|
|
92
|
-
|
|
93
|
-
with APCProxy() as proxy:
|
|
94
|
-
|
|
95
|
-
sp = proxy.get_service_proxy()
|
|
96
|
-
sp.quit_server()
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if __name__ == "__main__":
|
|
100
|
-
|
|
101
|
-
sys.exit(cli())
|
egse/ups/apc/apc_protocol.py
DELETED
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
|
-
from prometheus_client import Gauge
|
|
4
|
-
|
|
5
|
-
from egse.control import ControlServer
|
|
6
|
-
from egse.protocol import CommandProtocol
|
|
7
|
-
from egse.settings import Settings
|
|
8
|
-
# from egse.fdir.fdir_manager import FdirManagerProxy
|
|
9
|
-
|
|
10
|
-
from egse.ups.apc.apc import APCController
|
|
11
|
-
from egse.ups.apc.apc import APCInterface
|
|
12
|
-
from egse.ups.apc.apc import APCSimulator
|
|
13
|
-
from egse.ups.apc.apc import APCCommand
|
|
14
|
-
from egse.system import format_datetime
|
|
15
|
-
from egse.zmq_ser import bind_address
|
|
16
|
-
|
|
17
|
-
logger = logging.getLogger(__name__)
|
|
18
|
-
|
|
19
|
-
COMMAND_SETTINGS = Settings.load(filename='apc.yaml')
|
|
20
|
-
|
|
21
|
-
class APCProtocol(CommandProtocol):
|
|
22
|
-
def __init__(self, control_server:ControlServer):
|
|
23
|
-
super().__init__()
|
|
24
|
-
self.control_server = control_server
|
|
25
|
-
|
|
26
|
-
if Settings.simulation_mode():
|
|
27
|
-
self.apc = APCSimulator()
|
|
28
|
-
else:
|
|
29
|
-
self.apc = APCController()
|
|
30
|
-
|
|
31
|
-
self.load_commands(COMMAND_SETTINGS.Commands, APCCommand, APCInterface)
|
|
32
|
-
|
|
33
|
-
self.build_device_method_lookup_table(self.apc)
|
|
34
|
-
|
|
35
|
-
self.gauge_linev = Gauge('GSRON_UPS_LINEV', '')
|
|
36
|
-
self.gauge_loadpct = Gauge('GSRON_UPS_LOADPCT', '')
|
|
37
|
-
self.gauge_bcharge = Gauge('GSRON_UPS_BCHARGE', '')
|
|
38
|
-
self.gauge_timeleft = Gauge('GSRON_UPS_TIMELEFT', '')
|
|
39
|
-
self.gauge_mbattchg = Gauge('GSRON_UPS_MBATTCHG', '')
|
|
40
|
-
self.gauge_mintimel = Gauge('GSRON_UPS_MINTIMEL', '')
|
|
41
|
-
self.gauge_maxtime = Gauge('GSRON_UPS_MAXTIME', '')
|
|
42
|
-
self.gauge_maxlinev = Gauge('GSRON_UPS_MAXLINEV', '')
|
|
43
|
-
self.gauge_minlinev = Gauge('GSRON_UPS_MINLINEV', '')
|
|
44
|
-
self.gauge_outputv = Gauge('GSRON_UPS_OUTPUTV', '')
|
|
45
|
-
self.gauge_dlowbatt = Gauge('GSRON_UPS_DLOWBATT', '')
|
|
46
|
-
self.gauge_lotrans = Gauge('GSRON_UPS_LOTRANS', '')
|
|
47
|
-
self.gauge_hitrans = Gauge('GSRON_UPS_HITRANS', '')
|
|
48
|
-
self.gauge_itemp = Gauge('GSRON_UPS_ITEMP', '')
|
|
49
|
-
self.gauge_alarmdel = Gauge('GSRON_UPS_ALARMDEL', '')
|
|
50
|
-
self.gauge_battv = Gauge('GSRON_UPS_BATTV', '')
|
|
51
|
-
self.gauge_linefreq = Gauge('GSRON_UPS_LINEFREQ', '')
|
|
52
|
-
self.gauge_lastxfer = Gauge('GSRON_UPS_LASTXFER', '')
|
|
53
|
-
self.gauge_numxfers = Gauge('GSRON_UPS_NUMXFERS', '')
|
|
54
|
-
self.gauge_tonbatt = Gauge('GSRON_UPS_TONBATT', '')
|
|
55
|
-
self.gauge_cumonbatt = Gauge('GSRON_UPS_CUMONBATT', '')
|
|
56
|
-
self.gauge_xoffbatt = Gauge('GSRON_UPS_XOFFBATT', '')
|
|
57
|
-
self.gauge_statflag = Gauge('GSRON_UPS_STATFLAG', '')
|
|
58
|
-
self.gauge_onbatt = Gauge('GSRON_UPS_ONBATT', '')
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def get_bind_address(self):
|
|
62
|
-
return bind_address(self.control_server.get_communication_protocol(),
|
|
63
|
-
self.control_server.get_commanding_port())
|
|
64
|
-
|
|
65
|
-
def get_status(self):
|
|
66
|
-
return super().get_status()
|
|
67
|
-
|
|
68
|
-
def get_housekeeping(self) -> dict:
|
|
69
|
-
|
|
70
|
-
hk_dict = {'timestamp': format_datetime()}
|
|
71
|
-
|
|
72
|
-
try:
|
|
73
|
-
dct = self.apc.get_status_dict()
|
|
74
|
-
hk_dict[f'GSRON_UPS_LINEV'] = dct['LINEV']
|
|
75
|
-
hk_dict[f'GSRON_UPS_LOADPCT'] = dct['LOADPCT']
|
|
76
|
-
hk_dict[f'GSRON_UPS_BCHARGE'] = dct['BCHARGE']
|
|
77
|
-
hk_dict[f'GSRON_UPS_TIMELEFT'] = dct['TIMELEFT']
|
|
78
|
-
hk_dict[f'GSRON_UPS_MBATTCHG'] = dct['MBATTCHG']
|
|
79
|
-
hk_dict[f'GSRON_UPS_MINTIMEL'] = dct['MINTIMEL']
|
|
80
|
-
hk_dict[f'GSRON_UPS_MAXTIME'] = dct['MAXTIME']
|
|
81
|
-
hk_dict[f'GSRON_UPS_MAXLINEV'] = dct['MAXLINEV']
|
|
82
|
-
hk_dict[f'GSRON_UPS_MINLINEV'] = dct['MINLINEV']
|
|
83
|
-
hk_dict[f'GSRON_UPS_OUTPUTV'] = dct['OUTPUTV']
|
|
84
|
-
hk_dict[f'GSRON_UPS_DLOWBATT'] = dct['DLOWBATT']
|
|
85
|
-
hk_dict[f'GSRON_UPS_LOTRANS'] = dct['LOTRANS']
|
|
86
|
-
hk_dict[f'GSRON_UPS_HITRANS'] = dct['HITRANS']
|
|
87
|
-
hk_dict[f'GSRON_UPS_ITEMP'] = dct['ITEMP']
|
|
88
|
-
hk_dict[f'GSRON_UPS_ALARMDEL'] = dct['ALARMDEL']
|
|
89
|
-
hk_dict[f'GSRON_UPS_BATTV'] = dct['BATTV']
|
|
90
|
-
hk_dict[f'GSRON_UPS_LINEFREQ'] = dct['LINEFREQ']
|
|
91
|
-
hk_dict[f'GSRON_UPS_NUMXFERS'] = dct['NUMXFERS']
|
|
92
|
-
hk_dict[f'GSRON_UPS_TONBATT'] = dct['TONBATT']
|
|
93
|
-
hk_dict[f'GSRON_UPS_CUMONBATT'] = dct['CUMONBATT']
|
|
94
|
-
hk_dict[f'GSRON_UPS_STATFLAG'] = int(dct['STATFLAG'], 16)
|
|
95
|
-
hk_dict[f'GSRON_UPS_ONBATT'] = 'ONBATT' in dct['STATUS']
|
|
96
|
-
|
|
97
|
-
except Exception as exc:
|
|
98
|
-
logger.exception("failed to get HK: %s", exc)
|
|
99
|
-
|
|
100
|
-
return hk_dict
|
|
101
|
-
|
|
102
|
-
self.gauge_linev.set(hk_dict[f'GSRON_UPS_LINEV'])
|
|
103
|
-
self.gauge_loadpct.set(hk_dict[f'GSRON_UPS_LOADPCT'])
|
|
104
|
-
self.gauge_bcharge.set(hk_dict[f'GSRON_UPS_BCHARGE'])
|
|
105
|
-
self.gauge_timeleft.set(hk_dict[f'GSRON_UPS_TIMELEFT'])
|
|
106
|
-
self.gauge_mbattchg.set(hk_dict[f'GSRON_UPS_MBATTCHG'])
|
|
107
|
-
self.gauge_mintimel.set(hk_dict[f'GSRON_UPS_MINTIMEL'])
|
|
108
|
-
self.gauge_maxtime.set(hk_dict[f'GSRON_UPS_MAXTIME'])
|
|
109
|
-
self.gauge_maxlinev.set(hk_dict[f'GSRON_UPS_MAXLINEV'])
|
|
110
|
-
self.gauge_minlinev.set(hk_dict[f'GSRON_UPS_MINLINEV'])
|
|
111
|
-
self.gauge_outputv.set(hk_dict[f'GSRON_UPS_OUTPUTV'])
|
|
112
|
-
self.gauge_dlowbatt.set(hk_dict[f'GSRON_UPS_DLOWBATT'])
|
|
113
|
-
self.gauge_lotrans.set(hk_dict[f'GSRON_UPS_LOTRANS'])
|
|
114
|
-
self.gauge_hitrans.set(hk_dict[f'GSRON_UPS_HITRANS'])
|
|
115
|
-
self.gauge_itemp.set(hk_dict[f'GSRON_UPS_ITEMP'])
|
|
116
|
-
self.gauge_alarmdel.set(hk_dict[f'GSRON_UPS_ALARMDEL'])
|
|
117
|
-
self.gauge_battv.set(hk_dict[f'GSRON_UPS_BATTV'])
|
|
118
|
-
self.gauge_linefreq.set(hk_dict[f'GSRON_UPS_LINEFREQ'])
|
|
119
|
-
self.gauge_numxfers.set(hk_dict[f'GSRON_UPS_NUMXFERS'])
|
|
120
|
-
self.gauge_tonbatt.set(hk_dict[f'GSRON_UPS_TONBATT'])
|
|
121
|
-
self.gauge_cumonbatt.set(hk_dict[f'GSRON_UPS_CUMONBATT'])
|
|
122
|
-
self.gauge_statflag.set(hk_dict[f'GSRON_UPS_STATFLAG'])
|
|
123
|
-
self.gauge_onbatt.set(hk_dict[f'GSRON_UPS_ONBATT'])
|
|
124
|
-
|
|
125
|
-
return hk_dict
|
egse/user.yaml
DELETED
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
import random
|
|
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.vacuum.beaglebone.beaglebone_devif import BeagleboneDeviceInterface
|
|
9
|
-
from egse.zmq_ser import connect_address
|
|
10
|
-
|
|
11
|
-
logger = logging.getLogger(__name__)
|
|
12
|
-
|
|
13
|
-
CTRL_SETTINGS = Settings.load("BeagleBone Valve Control Server")
|
|
14
|
-
DEVICE_SETTINGS = Settings.load(filename='beaglebone.yaml')
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
class BeagleboneError(Exception):
|
|
18
|
-
pass
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class BeagleboneInterface(DeviceInterface):
|
|
22
|
-
""" BeagleBone Valve controller base class."""
|
|
23
|
-
|
|
24
|
-
@dynamic_interface
|
|
25
|
-
def set_valve(self, valve_idx, valve_state):
|
|
26
|
-
""" Sets the state of the selected valve to the given state """
|
|
27
|
-
return NotImplemented
|
|
28
|
-
|
|
29
|
-
@dynamic_interface
|
|
30
|
-
def get_valve(self, valve_idx):
|
|
31
|
-
""" Returns the state of the selected valve """
|
|
32
|
-
return NotImplemented
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
class BeagleboneSimulator(BeagleboneInterface):
|
|
37
|
-
""" BeagleBone Valve controller simulator class. """
|
|
38
|
-
|
|
39
|
-
def __init__(self):
|
|
40
|
-
self.valvefb = {
|
|
41
|
-
"LN2_SHROUD_RMT" : 1,
|
|
42
|
-
"LN2_TEB-FEE_RMT" : 1,
|
|
43
|
-
"LN2_TEB-TOU_RMT" : 1,
|
|
44
|
-
"LN2_TRAP_RMT" : 1,
|
|
45
|
-
"N2_SHROUD_RMT" : 1,
|
|
46
|
-
"N2_TEB-FEE_RMT" : 1,
|
|
47
|
-
"N2_TEB-TOU_RMT" : 1,
|
|
48
|
-
"N2_TRAP_RMT" : 1,
|
|
49
|
-
"VENT_VALVE_RMT" : 1,
|
|
50
|
-
"GATE_VALVE_RMT" : 1,
|
|
51
|
-
"LN2_SHROUD_FB" : random.getrandbits(1),
|
|
52
|
-
"LN2_TEB-FEE_FB" : random.getrandbits(1),
|
|
53
|
-
"LN2_TEB-TOU_FB" : random.getrandbits(1),
|
|
54
|
-
"LN2_TRAP_FB" : random.getrandbits(1),
|
|
55
|
-
"N2_SHROUD_FB" : random.getrandbits(1),
|
|
56
|
-
"N2_TEB-FEE_FB" : random.getrandbits(1),
|
|
57
|
-
"N2_TEB-TOU_FB" : random.getrandbits(1),
|
|
58
|
-
"N2_TRAP_FB" : random.getrandbits(1),
|
|
59
|
-
"VENT_VALVE_FB" : random.getrandbits(1),
|
|
60
|
-
"GATE_OPEN_FB" : random.getrandbits(1),
|
|
61
|
-
"GATE_CLOSE_FB" : random.getrandbits(1),
|
|
62
|
-
"INTRLCK_DOOR_FB" : random.getrandbits(1)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
self.valves = {
|
|
66
|
-
"MV011" : self.valvefb['LN2_SHROUD_FB'],
|
|
67
|
-
"MV012" : self.valvefb['LN2_TEB-FEE_FB'],
|
|
68
|
-
"MV013" : self.valvefb['LN2_TEB-TOU_FB'],
|
|
69
|
-
"MV014" : self.valvefb['LN2_TRAP_FB'],
|
|
70
|
-
"MV021" : self.valvefb['N2_SHROUD_FB'],
|
|
71
|
-
"MV022" : self.valvefb['N2_TEB-FEE_FB'],
|
|
72
|
-
"MV032" : self.valvefb['N2_TEB-TOU_FB'],
|
|
73
|
-
"MV042" : self.valvefb['N2_TRAP_FB'],
|
|
74
|
-
'MV001' : self.valvefb['VENT_VALVE_FB'],
|
|
75
|
-
'MV002' : self.valvefb['GATE_OPEN_FB']
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
self._is_connected = True
|
|
79
|
-
|
|
80
|
-
def is_connected(self):
|
|
81
|
-
return self._is_connected
|
|
82
|
-
|
|
83
|
-
def is_simulator(self):
|
|
84
|
-
return True
|
|
85
|
-
|
|
86
|
-
def connect(self):
|
|
87
|
-
self._is_connected = True
|
|
88
|
-
|
|
89
|
-
def disconnect(self):
|
|
90
|
-
self._is_connected = False
|
|
91
|
-
|
|
92
|
-
def reconnect(self):
|
|
93
|
-
if self.is_connected():
|
|
94
|
-
self.disconnect()
|
|
95
|
-
self.connect()
|
|
96
|
-
|
|
97
|
-
def set_valve(self, valve_idx, valve_state):
|
|
98
|
-
logger.info(f"Settings {valve_idx} to {valve_state}")
|
|
99
|
-
self.valves[valve_idx] = valve_state
|
|
100
|
-
|
|
101
|
-
def get_valve(self, valve_idx):
|
|
102
|
-
return self.valvefb[valve_idx]
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
class BeagleboneController(BeagleboneInterface):
|
|
106
|
-
|
|
107
|
-
def __init__(self):
|
|
108
|
-
super().__init__()
|
|
109
|
-
|
|
110
|
-
logger.debug('Initalizing BeagleBone Valve Controller')
|
|
111
|
-
|
|
112
|
-
try:
|
|
113
|
-
self.beaglebone = BeagleboneDeviceInterface()
|
|
114
|
-
self.beaglebone.connect()
|
|
115
|
-
except BeagleboneError as exc:
|
|
116
|
-
logger.warning(f"BeagleboneError caught: Couldn't establish connection ({exc})")
|
|
117
|
-
raise BeagleboneError(
|
|
118
|
-
"Couldn't establish a connection with BeagleBone controller."
|
|
119
|
-
) from exc
|
|
120
|
-
|
|
121
|
-
def is_simulator(self):
|
|
122
|
-
return False
|
|
123
|
-
|
|
124
|
-
def is_connected(self):
|
|
125
|
-
return self.beaglebone.is_connected()
|
|
126
|
-
|
|
127
|
-
def connect(self):
|
|
128
|
-
if not self.beaglebone.is_connected():
|
|
129
|
-
self.beaglebone.connect()
|
|
130
|
-
|
|
131
|
-
def disconnect(self):
|
|
132
|
-
self.beaglebone.disconnect()
|
|
133
|
-
|
|
134
|
-
def reconnect(self):
|
|
135
|
-
self.beaglebone.reconnect()
|
|
136
|
-
|
|
137
|
-
def set_valve(self, valve_idx, valve_state):
|
|
138
|
-
return self.beaglebone.set_valve(valve_idx, valve_state)
|
|
139
|
-
|
|
140
|
-
def get_valve(self, valve_idx):
|
|
141
|
-
return self.beaglebone.get_valve(valve_idx)
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
class BeagleboneProxy(Proxy, BeagleboneInterface):
|
|
146
|
-
def __init__(self, protocol=CTRL_SETTINGS.PROTOCOL,
|
|
147
|
-
hostname=CTRL_SETTINGS.HOSTNAME,
|
|
148
|
-
port=CTRL_SETTINGS.COMMANDING_PORT):
|
|
149
|
-
super().__init__(connect_address(protocol, hostname, port))
|