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.
Files changed (653) hide show
  1. README.md +27 -0
  2. bump.py +85 -0
  3. cgse-2024.1.4.dist-info/METADATA +38 -0
  4. cgse-2024.1.4.dist-info/RECORD +5 -0
  5. {cgse-2023.38.0.dist-info → cgse-2024.1.4.dist-info}/WHEEL +1 -2
  6. cgse-2023.38.0.dist-info/COPYING +0 -674
  7. cgse-2023.38.0.dist-info/COPYING.LESSER +0 -165
  8. cgse-2023.38.0.dist-info/METADATA +0 -144
  9. cgse-2023.38.0.dist-info/RECORD +0 -649
  10. cgse-2023.38.0.dist-info/entry_points.txt +0 -75
  11. cgse-2023.38.0.dist-info/top_level.txt +0 -2
  12. egse/__init__.py +0 -12
  13. egse/__main__.py +0 -32
  14. egse/aeu/aeu.py +0 -5235
  15. egse/aeu/aeu_awg.yaml +0 -265
  16. egse/aeu/aeu_crio.yaml +0 -273
  17. egse/aeu/aeu_cs.py +0 -626
  18. egse/aeu/aeu_devif.py +0 -321
  19. egse/aeu/aeu_main_ui.py +0 -912
  20. egse/aeu/aeu_metrics.py +0 -131
  21. egse/aeu/aeu_protocol.py +0 -463
  22. egse/aeu/aeu_psu.yaml +0 -204
  23. egse/aeu/aeu_ui.py +0 -873
  24. egse/aeu/arbdata/FccdRead.arb +0 -2
  25. egse/aeu/arbdata/FccdRead_min_points.arb +0 -2
  26. egse/aeu/arbdata/HeaterSync_FccdRead.arb +0 -2
  27. egse/aeu/arbdata/HeaterSync_ccdRead25.arb +0 -2
  28. egse/aeu/arbdata/HeaterSync_ccdRead31_25.arb +0 -2
  29. egse/aeu/arbdata/HeaterSync_ccdRead37_50.arb +0 -2
  30. egse/aeu/arbdata/HeaterSync_ccdRead43_75.arb +0 -2
  31. egse/aeu/arbdata/HeaterSync_ccdRead50.arb +0 -2
  32. egse/aeu/arbdata/Heater_FccdRead_min_points.arb +0 -2
  33. egse/aeu/arbdata/ccdRead25.arb +0 -2
  34. egse/aeu/arbdata/ccdRead25_150ms.arb +0 -2
  35. egse/aeu/arbdata/ccdRead31_25.arb +0 -2
  36. egse/aeu/arbdata/ccdRead31_25_150ms.arb +0 -2
  37. egse/aeu/arbdata/ccdRead37_50.arb +0 -2
  38. egse/aeu/arbdata/ccdRead37_50_150ms.arb +0 -2
  39. egse/aeu/arbdata/ccdRead43_75.arb +0 -2
  40. egse/aeu/arbdata/ccdRead43_75_150ms.arb +0 -2
  41. egse/aeu/arbdata/ccdRead50.arb +0 -2
  42. egse/aeu/arbdata/ccdRead50_150ms.arb +0 -2
  43. egse/alert/__init__.py +0 -1049
  44. egse/alert/alertman.yaml +0 -37
  45. egse/alert/alertman_cs.py +0 -234
  46. egse/alert/alertman_ui.py +0 -603
  47. egse/alert/gsm/beaglebone.py +0 -138
  48. egse/alert/gsm/beaglebone.yaml +0 -51
  49. egse/alert/gsm/beaglebone_cs.py +0 -108
  50. egse/alert/gsm/beaglebone_devif.py +0 -130
  51. egse/alert/gsm/beaglebone_protocol.py +0 -48
  52. egse/bits.py +0 -318
  53. egse/camera.py +0 -44
  54. egse/collimator/__init__.py +0 -0
  55. egse/collimator/fcul/__init__.py +0 -0
  56. egse/collimator/fcul/ogse.py +0 -1077
  57. egse/collimator/fcul/ogse.yaml +0 -14
  58. egse/collimator/fcul/ogse_cs.py +0 -154
  59. egse/collimator/fcul/ogse_devif.py +0 -358
  60. egse/collimator/fcul/ogse_protocol.py +0 -129
  61. egse/collimator/fcul/ogse_sim.py +0 -431
  62. egse/collimator/fcul/ogse_ui.py +0 -1108
  63. egse/command.py +0 -699
  64. egse/config.py +0 -410
  65. egse/confman/__init__.py +0 -1015
  66. egse/confman/confman.yaml +0 -67
  67. egse/confman/confman_cs.py +0 -239
  68. egse/confman/confman_ui.py +0 -381
  69. egse/confman/setup_ui.py +0 -565
  70. egse/control.py +0 -442
  71. egse/coordinates/__init__.py +0 -531
  72. egse/coordinates/avoidance.py +0 -103
  73. egse/coordinates/cslmodel.py +0 -127
  74. egse/coordinates/laser_tracker_to_dict.py +0 -120
  75. egse/coordinates/point.py +0 -707
  76. egse/coordinates/pyplot.py +0 -195
  77. egse/coordinates/referenceFrame.py +0 -1279
  78. egse/coordinates/refmodel.py +0 -737
  79. egse/coordinates/rotationMatrix.py +0 -85
  80. egse/coordinates/transform3d_addon.py +0 -419
  81. egse/csl/__init__.py +0 -50
  82. egse/csl/commanding.py +0 -78
  83. egse/csl/icons/hexapod-connected-selected.svg +0 -30
  84. egse/csl/icons/hexapod-connected.svg +0 -30
  85. egse/csl/icons/hexapod-homing-selected.svg +0 -68
  86. egse/csl/icons/hexapod-homing.svg +0 -68
  87. egse/csl/icons/hexapod-retract-selected.svg +0 -56
  88. egse/csl/icons/hexapod-retract.svg +0 -51
  89. egse/csl/icons/hexapod-zero-selected.svg +0 -56
  90. egse/csl/icons/hexapod-zero.svg +0 -56
  91. egse/csl/icons/logo-puna.svg +0 -92
  92. egse/csl/icons/stop.svg +0 -1
  93. egse/csl/initialisation.py +0 -102
  94. egse/csl/mech_pos_settings.yaml +0 -18
  95. egse/das.py +0 -1247
  96. egse/das.yaml +0 -7
  97. egse/data/conf/SETUP_CSL_00000_170620_150000.yaml +0 -5
  98. egse/data/conf/SETUP_CSL_00001_170620_151010.yaml +0 -69
  99. egse/data/conf/SETUP_CSL_00002_170620_151020.yaml +0 -69
  100. egse/data/conf/SETUP_CSL_00003_170620_151030.yaml +0 -69
  101. egse/data/conf/SETUP_CSL_00004_170620_151040.yaml +0 -69
  102. egse/data/conf/SETUP_CSL_00005_170620_151050.yaml +0 -69
  103. egse/data/conf/SETUP_CSL_00006_170620_151060.yaml +0 -69
  104. egse/data/conf/SETUP_CSL_00007_170620_151070.yaml +0 -69
  105. egse/data/conf/SETUP_CSL_00008_170620_151080.yaml +0 -75
  106. egse/data/conf/SETUP_CSL_00010_210308_083016.yaml +0 -138
  107. egse/data/conf/SETUP_INTA_00000_170620_150000.yaml +0 -4
  108. egse/data/conf/SETUP_SRON_00000_170620_150000.yaml +0 -4
  109. egse/decorators.py +0 -415
  110. egse/device.py +0 -269
  111. egse/dpu/__init__.py +0 -2681
  112. egse/dpu/ccd_ui.py +0 -508
  113. egse/dpu/dpu.py +0 -786
  114. egse/dpu/dpu.yaml +0 -153
  115. egse/dpu/dpu_cs.py +0 -272
  116. egse/dpu/dpu_ui.py +0 -668
  117. egse/dpu/fitsgen.py +0 -2077
  118. egse/dpu/fitsgen_test.py +0 -752
  119. egse/dpu/fitsgen_ui.py +0 -399
  120. egse/dpu/hdf5_model.py +0 -332
  121. egse/dpu/hdf5_ui.py +0 -277
  122. egse/dpu/hdf5_viewer.py +0 -506
  123. egse/dpu/hk_ui.py +0 -468
  124. egse/dpu_commands.py +0 -81
  125. egse/dsi/constants.py +0 -220
  126. egse/dsi/esl.py +0 -870
  127. egse/dsi/rmap.py +0 -1042
  128. egse/dsi/rmapci.py +0 -37
  129. egse/dsi/spw.py +0 -154
  130. egse/dsi/spw_state.py +0 -29
  131. egse/dummy.py +0 -258
  132. egse/dyndummy.py +0 -179
  133. egse/env.py +0 -278
  134. egse/exceptions.py +0 -88
  135. egse/fdir/__init__.py +0 -28
  136. egse/fdir/fdir_manager.py +0 -85
  137. egse/fdir/fdir_manager.yaml +0 -51
  138. egse/fdir/fdir_manager_controller.py +0 -228
  139. egse/fdir/fdir_manager_cs.py +0 -164
  140. egse/fdir/fdir_manager_interface.py +0 -25
  141. egse/fdir/fdir_remote.py +0 -73
  142. egse/fdir/fdir_remote.yaml +0 -37
  143. egse/fdir/fdir_remote_controller.py +0 -50
  144. egse/fdir/fdir_remote_cs.py +0 -97
  145. egse/fdir/fdir_remote_interface.py +0 -14
  146. egse/fdir/fdir_remote_popup.py +0 -31
  147. egse/fee/__init__.py +0 -114
  148. egse/fee/f_fee_register.yaml +0 -43
  149. egse/fee/fee.py +0 -631
  150. egse/fee/feesim.py +0 -750
  151. egse/fee/n_fee_hk.py +0 -761
  152. egse/fee/nfee.py +0 -187
  153. egse/filterwheel/__init__.py +0 -4
  154. egse/filterwheel/eksma/__init__.py +0 -24
  155. egse/filterwheel/eksma/fw8smc4.py +0 -661
  156. egse/filterwheel/eksma/fw8smc4.yaml +0 -121
  157. egse/filterwheel/eksma/fw8smc4_cs.py +0 -144
  158. egse/filterwheel/eksma/fw8smc4_devif.py +0 -473
  159. egse/filterwheel/eksma/fw8smc4_protocol.py +0 -81
  160. egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
  161. egse/filterwheel/eksma/fw8smc5.py +0 -111
  162. egse/filterwheel/eksma/fw8smc5.yaml +0 -105
  163. egse/filterwheel/eksma/fw8smc5_controller.py +0 -307
  164. egse/filterwheel/eksma/fw8smc5_cs.py +0 -141
  165. egse/filterwheel/eksma/fw8smc5_interface.py +0 -65
  166. egse/filterwheel/eksma/fw8smc5_simulator.py +0 -29
  167. egse/filterwheel/eksma/fw8smc5_ui.py +0 -1068
  168. egse/filterwheel/eksma/testpythonfw.py +0 -215
  169. egse/fov/__init__.py +0 -65
  170. egse/fov/fov_hk.py +0 -712
  171. egse/fov/fov_ui.py +0 -861
  172. egse/fov/fov_ui_controller.py +0 -140
  173. egse/fov/fov_ui_model.py +0 -200
  174. egse/fov/fov_ui_view.py +0 -345
  175. egse/gimbal/__init__.py +0 -32
  176. egse/gimbal/symetrie/__init__.py +0 -26
  177. egse/gimbal/symetrie/alpha.py +0 -586
  178. egse/gimbal/symetrie/generic_gimbal_ui.py +0 -1521
  179. egse/gimbal/symetrie/gimbal.py +0 -877
  180. egse/gimbal/symetrie/gimbal.yaml +0 -168
  181. egse/gimbal/symetrie/gimbal_cs.py +0 -183
  182. egse/gimbal/symetrie/gimbal_protocol.py +0 -135
  183. egse/gimbal/symetrie/gimbal_ui.py +0 -361
  184. egse/gimbal/symetrie/pmac.py +0 -1006
  185. egse/gimbal/symetrie/pmac_regex.py +0 -83
  186. egse/graph.py +0 -132
  187. egse/gui/__init__.py +0 -47
  188. egse/gui/buttons.py +0 -378
  189. egse/gui/focalplane.py +0 -1281
  190. egse/gui/formatter.py +0 -10
  191. egse/gui/led.py +0 -162
  192. egse/gui/limitswitch.py +0 -143
  193. egse/gui/mechanisms.py +0 -588
  194. egse/gui/states.py +0 -148
  195. egse/gui/stripchart.py +0 -729
  196. egse/gui/switch.py +0 -112
  197. egse/h5.py +0 -274
  198. egse/help/__init__.py +0 -0
  199. egse/help/help_ui.py +0 -126
  200. egse/hexapod/__init__.py +0 -32
  201. egse/hexapod/symetrie/__init__.py +0 -138
  202. egse/hexapod/symetrie/alpha.py +0 -874
  203. egse/hexapod/symetrie/dynalpha.py +0 -1387
  204. egse/hexapod/symetrie/hexapod_ui.py +0 -1516
  205. egse/hexapod/symetrie/pmac.py +0 -1010
  206. egse/hexapod/symetrie/pmac_regex.py +0 -83
  207. egse/hexapod/symetrie/puna.py +0 -1167
  208. egse/hexapod/symetrie/puna.yaml +0 -193
  209. egse/hexapod/symetrie/puna_cs.py +0 -196
  210. egse/hexapod/symetrie/puna_protocol.py +0 -131
  211. egse/hexapod/symetrie/puna_ui.py +0 -434
  212. egse/hexapod/symetrie/punaplus.py +0 -107
  213. egse/hexapod/symetrie/zonda.py +0 -872
  214. egse/hexapod/symetrie/zonda.yaml +0 -337
  215. egse/hexapod/symetrie/zonda_cs.py +0 -172
  216. egse/hexapod/symetrie/zonda_devif.py +0 -415
  217. egse/hexapod/symetrie/zonda_protocol.py +0 -119
  218. egse/hexapod/symetrie/zonda_ui.py +0 -449
  219. egse/hk.py +0 -765
  220. egse/icons/aeu-cs-start.svg +0 -117
  221. egse/icons/aeu-cs-stop.svg +0 -118
  222. egse/icons/aeu-cs.svg +0 -107
  223. egse/icons/aeu_cs-started.svg +0 -112
  224. egse/icons/aeu_cs-stopped.svg +0 -112
  225. egse/icons/aeu_cs.svg +0 -55
  226. egse/icons/alert.svg +0 -1
  227. egse/icons/arrow-double-left.png +0 -0
  228. egse/icons/arrow-double-right.png +0 -0
  229. egse/icons/arrow-up.svg +0 -11
  230. egse/icons/backward.svg +0 -1
  231. egse/icons/busy.svg +0 -1
  232. egse/icons/cleaning.svg +0 -115
  233. egse/icons/color-scheme.svg +0 -1
  234. egse/icons/cs-connected-alert.svg +0 -91
  235. egse/icons/cs-connected-disabled.svg +0 -43
  236. egse/icons/cs-connected.svg +0 -89
  237. egse/icons/cs-not-connected.svg +0 -44
  238. egse/icons/double-left-arrow.svg +0 -1
  239. egse/icons/double-right-arrow.svg +0 -1
  240. egse/icons/erase-disabled.svg +0 -19
  241. egse/icons/erase.svg +0 -59
  242. egse/icons/fitsgen-start.svg +0 -47
  243. egse/icons/fitsgen-stop.svg +0 -48
  244. egse/icons/fitsgen.svg +0 -1
  245. egse/icons/forward.svg +0 -1
  246. egse/icons/fov-hk-start.svg +0 -33
  247. egse/icons/fov-hk-stop.svg +0 -37
  248. egse/icons/fov-hk.svg +0 -1
  249. egse/icons/front-desk.svg +0 -1
  250. egse/icons/home-actioned.svg +0 -15
  251. egse/icons/home-disabled.svg +0 -15
  252. egse/icons/home.svg +0 -13
  253. egse/icons/info.svg +0 -1
  254. egse/icons/invalid.png +0 -0
  255. egse/icons/led-green.svg +0 -20
  256. egse/icons/led-grey.svg +0 -20
  257. egse/icons/led-orange.svg +0 -20
  258. egse/icons/led-red.svg +0 -20
  259. egse/icons/led-square-green.svg +0 -134
  260. egse/icons/led-square-grey.svg +0 -134
  261. egse/icons/led-square-orange.svg +0 -134
  262. egse/icons/led-square-red.svg +0 -134
  263. egse/icons/limit-switch-all-green.svg +0 -115
  264. egse/icons/limit-switch-all-red.svg +0 -117
  265. egse/icons/limit-switch-el+.svg +0 -116
  266. egse/icons/limit-switch-el-.svg +0 -117
  267. egse/icons/location-marker.svg +0 -1
  268. egse/icons/logo-dpu.svg +0 -48
  269. egse/icons/logo-gimbal.svg +0 -112
  270. egse/icons/logo-huber.svg +0 -23
  271. egse/icons/logo-ogse.svg +0 -31
  272. egse/icons/logo-puna.svg +0 -92
  273. egse/icons/logo-tcs.svg +0 -29
  274. egse/icons/logo-zonda.svg +0 -66
  275. egse/icons/maximize.svg +0 -1
  276. egse/icons/meter.svg +0 -1
  277. egse/icons/more.svg +0 -45
  278. egse/icons/n-fee-hk-start.svg +0 -24
  279. egse/icons/n-fee-hk-stop.svg +0 -25
  280. egse/icons/n-fee-hk.svg +0 -83
  281. egse/icons/observing-off.svg +0 -46
  282. egse/icons/observing-on.svg +0 -46
  283. egse/icons/open-document-hdf5.png +0 -0
  284. egse/icons/open-document-hdf5.svg +0 -21
  285. egse/icons/ops-mode.svg +0 -1
  286. egse/icons/play-green.svg +0 -17
  287. egse/icons/plugged-disabled.svg +0 -27
  288. egse/icons/plugged.svg +0 -21
  289. egse/icons/pm_ui.svg +0 -1
  290. egse/icons/power-button-green.svg +0 -27
  291. egse/icons/power-button-red.svg +0 -27
  292. egse/icons/power-button.svg +0 -27
  293. egse/icons/radar.svg +0 -1
  294. egse/icons/radioactive.svg +0 -2
  295. egse/icons/reload.svg +0 -1
  296. egse/icons/remote-control-off.svg +0 -28
  297. egse/icons/remote-control-on.svg +0 -28
  298. egse/icons/repeat-blue.svg +0 -15
  299. egse/icons/repeat.svg +0 -1
  300. egse/icons/settings.svg +0 -1
  301. egse/icons/shrink.svg +0 -1
  302. egse/icons/shutter.svg +0 -1
  303. egse/icons/sign-off.svg +0 -1
  304. egse/icons/sign-on.svg +0 -1
  305. egse/icons/sim-mode.svg +0 -1
  306. egse/icons/small-buttons-go.svg +0 -20
  307. egse/icons/small-buttons-minus.svg +0 -51
  308. egse/icons/small-buttons-plus.svg +0 -51
  309. egse/icons/sponge.svg +0 -220
  310. egse/icons/start-button-disabled.svg +0 -84
  311. egse/icons/start-button.svg +0 -50
  312. egse/icons/stop-button-disabled.svg +0 -84
  313. egse/icons/stop-button.svg +0 -50
  314. egse/icons/stop-red.svg +0 -17
  315. egse/icons/stop.svg +0 -1
  316. egse/icons/switch-disabled-square.svg +0 -87
  317. egse/icons/switch-disabled.svg +0 -15
  318. egse/icons/switch-off-square.svg +0 -87
  319. egse/icons/switch-off.svg +0 -72
  320. egse/icons/switch-on-square.svg +0 -87
  321. egse/icons/switch-on.svg +0 -61
  322. egse/icons/temperature-control.svg +0 -44
  323. egse/icons/th_ui_logo.svg +0 -1
  324. egse/icons/unplugged.svg +0 -23
  325. egse/icons/unvalid.png +0 -0
  326. egse/icons/user-interface.svg +0 -1
  327. egse/icons/vacuum.svg +0 -1
  328. egse/icons/valid.png +0 -0
  329. egse/icons/zoom-to-pixel-dark.svg +0 -64
  330. egse/icons/zoom-to-pixel-white.svg +0 -36
  331. egse/images/big-rotation-stage.png +0 -0
  332. egse/images/connected-100.png +0 -0
  333. egse/images/cross.svg +0 -6
  334. egse/images/disconnected-100.png +0 -0
  335. egse/images/gui-icon.png +0 -0
  336. egse/images/home.svg +0 -6
  337. egse/images/info-icon.png +0 -0
  338. egse/images/led-black.svg +0 -89
  339. egse/images/led-green.svg +0 -85
  340. egse/images/led-orange.svg +0 -85
  341. egse/images/led-red.svg +0 -85
  342. egse/images/load-icon.png +0 -0
  343. egse/images/load-setup.png +0 -0
  344. egse/images/load.png +0 -0
  345. egse/images/pause.png +0 -0
  346. egse/images/play-button.svg +0 -8
  347. egse/images/play.png +0 -0
  348. egse/images/process-status.png +0 -0
  349. egse/images/restart.png +0 -0
  350. egse/images/search.png +0 -0
  351. egse/images/sma.png +0 -0
  352. egse/images/start.png +0 -0
  353. egse/images/stop-button.svg +0 -8
  354. egse/images/stop.png +0 -0
  355. egse/images/switch-off.svg +0 -48
  356. egse/images/switch-on.svg +0 -48
  357. egse/images/undo.png +0 -0
  358. egse/images/update-button.svg +0 -11
  359. egse/imageviewer/exposureselection.py +0 -475
  360. egse/imageviewer/imageviewer.py +0 -198
  361. egse/imageviewer/matchfocalplane.py +0 -179
  362. egse/imageviewer/subfieldposition.py +0 -133
  363. egse/lampcontrol/__init__.py +0 -4
  364. egse/lampcontrol/beaglebone/beaglebone.py +0 -178
  365. egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
  366. egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
  367. egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
  368. egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
  369. egse/lampcontrol/energetiq/__init__.py +0 -22
  370. egse/lampcontrol/energetiq/eq99.yaml +0 -98
  371. egse/lampcontrol/energetiq/lampEQ99.py +0 -283
  372. egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
  373. egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
  374. egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
  375. egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -69
  376. egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
  377. egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
  378. egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
  379. egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
  380. egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
  381. egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
  382. egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
  383. egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
  384. egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
  385. egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
  386. egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
  387. egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
  388. egse/lib/macOS/ESL-RMAP_v34_86.dylib +0 -0
  389. egse/lib/macOS/EtherSpaceLink_v34_86.dylib +0 -0
  390. egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
  391. egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
  392. egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
  393. egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
  394. egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
  395. egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
  396. egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
  397. egse/lib/ximc/libximc.framework/libbindy.so +0 -0
  398. egse/lib/ximc/libximc.framework/libximc +0 -0
  399. egse/lib/ximc/libximc.framework/libximc.so +0 -0
  400. egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
  401. egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
  402. egse/lib/ximc/pyximc.py +0 -922
  403. egse/listener.py +0 -73
  404. egse/logger/__init__.py +0 -243
  405. egse/logger/log_cs.py +0 -321
  406. egse/metrics.py +0 -98
  407. egse/mixin.py +0 -464
  408. egse/monitoring.py +0 -95
  409. egse/ni/alarms/__init__.py +0 -26
  410. egse/ni/alarms/cdaq9375.py +0 -300
  411. egse/ni/alarms/cdaq9375.yaml +0 -89
  412. egse/ni/alarms/cdaq9375_cs.py +0 -130
  413. egse/ni/alarms/cdaq9375_devif.py +0 -183
  414. egse/ni/alarms/cdaq9375_protocol.py +0 -48
  415. egse/obs_inspection.py +0 -163
  416. egse/observer.py +0 -41
  417. egse/obsid.py +0 -163
  418. egse/powermeter/__init__.py +0 -0
  419. egse/powermeter/ni/__init__.py +0 -38
  420. egse/powermeter/ni/cdaq9184.py +0 -224
  421. egse/powermeter/ni/cdaq9184.yaml +0 -73
  422. egse/powermeter/ni/cdaq9184_cs.py +0 -130
  423. egse/powermeter/ni/cdaq9184_devif.py +0 -201
  424. egse/powermeter/ni/cdaq9184_protocol.py +0 -48
  425. egse/powermeter/ni/cdaq9184_ui.py +0 -544
  426. egse/powermeter/thorlabs/__init__.py +0 -25
  427. egse/powermeter/thorlabs/pm100a.py +0 -380
  428. egse/powermeter/thorlabs/pm100a.yaml +0 -132
  429. egse/powermeter/thorlabs/pm100a_cs.py +0 -136
  430. egse/powermeter/thorlabs/pm100a_devif.py +0 -127
  431. egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
  432. egse/powermeter/thorlabs/pm100a_ui.py +0 -725
  433. egse/process.py +0 -451
  434. egse/procman/__init__.py +0 -811
  435. egse/procman/cannot_start_process_popup.py +0 -43
  436. egse/procman/procman.yaml +0 -49
  437. egse/procman/procman_cs.py +0 -201
  438. egse/procman/procman_ui.py +0 -2081
  439. egse/protocol.py +0 -603
  440. egse/proxy.py +0 -522
  441. egse/randomwalk.py +0 -140
  442. egse/reg.py +0 -585
  443. egse/reload.py +0 -122
  444. egse/reprocess.py +0 -675
  445. egse/resource.py +0 -333
  446. egse/rst.py +0 -135
  447. egse/search.py +0 -182
  448. egse/serialdevice.py +0 -190
  449. egse/services.py +0 -212
  450. egse/services.yaml +0 -51
  451. egse/settings.py +0 -379
  452. egse/settings.yaml +0 -980
  453. egse/setup.py +0 -1180
  454. egse/shutter/__init__.py +0 -0
  455. egse/shutter/thorlabs/__init__.py +0 -19
  456. egse/shutter/thorlabs/ksc101.py +0 -205
  457. egse/shutter/thorlabs/ksc101.yaml +0 -105
  458. egse/shutter/thorlabs/ksc101_cs.py +0 -136
  459. egse/shutter/thorlabs/ksc101_devif.py +0 -201
  460. egse/shutter/thorlabs/ksc101_protocol.py +0 -69
  461. egse/shutter/thorlabs/ksc101_ui.py +0 -548
  462. egse/shutter/thorlabs/sc10.py +0 -82
  463. egse/shutter/thorlabs/sc10.yaml +0 -52
  464. egse/shutter/thorlabs/sc10_controller.py +0 -81
  465. egse/shutter/thorlabs/sc10_cs.py +0 -108
  466. egse/shutter/thorlabs/sc10_interface.py +0 -25
  467. egse/shutter/thorlabs/sc10_simulator.py +0 -30
  468. egse/simulator.py +0 -41
  469. egse/slack.py +0 -61
  470. egse/socketdevice.py +0 -218
  471. egse/sockets.py +0 -218
  472. egse/spw.py +0 -1479
  473. egse/stages/__init__.py +0 -12
  474. egse/stages/aerotech/ensemble.py +0 -247
  475. egse/stages/aerotech/ensemble.yaml +0 -205
  476. egse/stages/aerotech/ensemble_controller.py +0 -275
  477. egse/stages/aerotech/ensemble_cs.py +0 -110
  478. egse/stages/aerotech/ensemble_interface.py +0 -132
  479. egse/stages/aerotech/ensemble_parameters.py +0 -433
  480. egse/stages/aerotech/ensemble_simulator.py +0 -27
  481. egse/stages/aerotech/mgse_sim.py +0 -193
  482. egse/stages/arun/smd3.py +0 -111
  483. egse/stages/arun/smd3.yaml +0 -68
  484. egse/stages/arun/smd3_controller.py +0 -472
  485. egse/stages/arun/smd3_cs.py +0 -112
  486. egse/stages/arun/smd3_interface.py +0 -53
  487. egse/stages/arun/smd3_simulator.py +0 -27
  488. egse/stages/arun/smd3_stop.py +0 -16
  489. egse/stages/huber/__init__.py +0 -49
  490. egse/stages/huber/smc9300.py +0 -904
  491. egse/stages/huber/smc9300.yaml +0 -63
  492. egse/stages/huber/smc9300_cs.py +0 -178
  493. egse/stages/huber/smc9300_devif.py +0 -345
  494. egse/stages/huber/smc9300_protocol.py +0 -111
  495. egse/stages/huber/smc9300_sim.py +0 -547
  496. egse/stages/huber/smc9300_ui.py +0 -973
  497. egse/state.py +0 -173
  498. egse/statemachine.py +0 -274
  499. egse/storage/__init__.py +0 -1004
  500. egse/storage/persistence.py +0 -2295
  501. egse/storage/storage.yaml +0 -72
  502. egse/storage/storage_cs.py +0 -214
  503. egse/styles/dark.qss +0 -343
  504. egse/styles/default.qss +0 -48
  505. egse/synoptics/__init__.py +0 -412
  506. egse/synoptics/syn.yaml +0 -9
  507. egse/synoptics/syn_cs.py +0 -195
  508. egse/system.py +0 -1408
  509. egse/tcs/__init__.py +0 -14
  510. egse/tcs/tcs.py +0 -874
  511. egse/tcs/tcs.yaml +0 -14
  512. egse/tcs/tcs_cs.py +0 -202
  513. egse/tcs/tcs_devif.py +0 -292
  514. egse/tcs/tcs_protocol.py +0 -177
  515. egse/tcs/tcs_sim.py +0 -177
  516. egse/tcs/tcs_ui.py +0 -543
  517. egse/tdms.py +0 -171
  518. egse/tempcontrol/__init__.py +0 -23
  519. egse/tempcontrol/agilent/agilent34970.py +0 -109
  520. egse/tempcontrol/agilent/agilent34970.yaml +0 -44
  521. egse/tempcontrol/agilent/agilent34970_cs.py +0 -116
  522. egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
  523. egse/tempcontrol/agilent/agilent34970_protocol.py +0 -99
  524. egse/tempcontrol/agilent/agilent34972.py +0 -111
  525. egse/tempcontrol/agilent/agilent34972.yaml +0 -44
  526. egse/tempcontrol/agilent/agilent34972_cs.py +0 -117
  527. egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
  528. egse/tempcontrol/agilent/agilent34972_protocol.py +0 -101
  529. egse/tempcontrol/beaglebone/beaglebone.py +0 -342
  530. egse/tempcontrol/beaglebone/beaglebone.yaml +0 -110
  531. egse/tempcontrol/beaglebone/beaglebone_cs.py +0 -117
  532. egse/tempcontrol/beaglebone/beaglebone_protocol.py +0 -135
  533. egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -681
  534. egse/tempcontrol/digalox/digalox.py +0 -107
  535. egse/tempcontrol/digalox/digalox.yaml +0 -36
  536. egse/tempcontrol/digalox/digalox_cs.py +0 -112
  537. egse/tempcontrol/digalox/digalox_protocol.py +0 -55
  538. egse/tempcontrol/keithley/__init__.py +0 -33
  539. egse/tempcontrol/keithley/daq6510.py +0 -662
  540. egse/tempcontrol/keithley/daq6510.yaml +0 -105
  541. egse/tempcontrol/keithley/daq6510_cs.py +0 -163
  542. egse/tempcontrol/keithley/daq6510_devif.py +0 -343
  543. egse/tempcontrol/keithley/daq6510_protocol.py +0 -78
  544. egse/tempcontrol/keithley/daq6510_sim.py +0 -186
  545. egse/tempcontrol/lakeshore/__init__.py +0 -33
  546. egse/tempcontrol/lakeshore/lsci.py +0 -361
  547. egse/tempcontrol/lakeshore/lsci.yaml +0 -162
  548. egse/tempcontrol/lakeshore/lsci_cs.py +0 -174
  549. egse/tempcontrol/lakeshore/lsci_devif.py +0 -292
  550. egse/tempcontrol/lakeshore/lsci_protocol.py +0 -73
  551. egse/tempcontrol/lakeshore/lsci_ui.py +0 -389
  552. egse/tempcontrol/ni/__init__.py +0 -0
  553. egse/tempcontrol/spid/spid.py +0 -109
  554. egse/tempcontrol/spid/spid.yaml +0 -81
  555. egse/tempcontrol/spid/spid_controller.py +0 -279
  556. egse/tempcontrol/spid/spid_cs.py +0 -136
  557. egse/tempcontrol/spid/spid_protocol.py +0 -107
  558. egse/tempcontrol/spid/spid_ui.py +0 -727
  559. egse/tempcontrol/srs/__init__.py +0 -22
  560. egse/tempcontrol/srs/ptc10.py +0 -875
  561. egse/tempcontrol/srs/ptc10.yaml +0 -227
  562. egse/tempcontrol/srs/ptc10_cs.py +0 -128
  563. egse/tempcontrol/srs/ptc10_devif.py +0 -118
  564. egse/tempcontrol/srs/ptc10_protocol.py +0 -42
  565. egse/tempcontrol/srs/ptc10_ui.py +0 -906
  566. egse/ups/apc/apc.py +0 -236
  567. egse/ups/apc/apc.yaml +0 -45
  568. egse/ups/apc/apc_cs.py +0 -101
  569. egse/ups/apc/apc_protocol.py +0 -125
  570. egse/user.yaml +0 -7
  571. egse/vacuum/beaglebone/beaglebone.py +0 -149
  572. egse/vacuum/beaglebone/beaglebone.yaml +0 -44
  573. egse/vacuum/beaglebone/beaglebone_cs.py +0 -108
  574. egse/vacuum/beaglebone/beaglebone_devif.py +0 -164
  575. egse/vacuum/beaglebone/beaglebone_protocol.py +0 -193
  576. egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
  577. egse/vacuum/instrutech/igm402.py +0 -92
  578. egse/vacuum/instrutech/igm402.yaml +0 -90
  579. egse/vacuum/instrutech/igm402_controller.py +0 -128
  580. egse/vacuum/instrutech/igm402_cs.py +0 -108
  581. egse/vacuum/instrutech/igm402_interface.py +0 -49
  582. egse/vacuum/instrutech/igm402_simulator.py +0 -36
  583. egse/vacuum/keller/kellerBus.py +0 -256
  584. egse/vacuum/keller/leo3.py +0 -102
  585. egse/vacuum/keller/leo3.yaml +0 -38
  586. egse/vacuum/keller/leo3_controller.py +0 -83
  587. egse/vacuum/keller/leo3_cs.py +0 -101
  588. egse/vacuum/keller/leo3_interface.py +0 -33
  589. egse/vacuum/mks/evision.py +0 -86
  590. egse/vacuum/mks/evision.yaml +0 -75
  591. egse/vacuum/mks/evision_cs.py +0 -101
  592. egse/vacuum/mks/evision_devif.py +0 -316
  593. egse/vacuum/mks/evision_interface.py +0 -60
  594. egse/vacuum/mks/evision_simulator.py +0 -24
  595. egse/vacuum/mks/evision_ui.py +0 -704
  596. egse/vacuum/pfeiffer/acp40.py +0 -87
  597. egse/vacuum/pfeiffer/acp40.yaml +0 -60
  598. egse/vacuum/pfeiffer/acp40_controller.py +0 -117
  599. egse/vacuum/pfeiffer/acp40_cs.py +0 -109
  600. egse/vacuum/pfeiffer/acp40_interface.py +0 -40
  601. egse/vacuum/pfeiffer/acp40_simulator.py +0 -39
  602. egse/vacuum/pfeiffer/tc400.py +0 -113
  603. egse/vacuum/pfeiffer/tc400.yaml +0 -83
  604. egse/vacuum/pfeiffer/tc400_controller.py +0 -140
  605. egse/vacuum/pfeiffer/tc400_cs.py +0 -109
  606. egse/vacuum/pfeiffer/tc400_interface.py +0 -70
  607. egse/vacuum/pfeiffer/tc400_simulator.py +0 -24
  608. egse/vacuum/pfeiffer/tpg261.py +0 -81
  609. egse/vacuum/pfeiffer/tpg261.yaml +0 -66
  610. egse/vacuum/pfeiffer/tpg261_controller.py +0 -150
  611. egse/vacuum/pfeiffer/tpg261_cs.py +0 -109
  612. egse/vacuum/pfeiffer/tpg261_interface.py +0 -60
  613. egse/vacuum/pfeiffer/tpg261_simulator.py +0 -24
  614. egse/version.py +0 -174
  615. egse/visitedpositions.py +0 -398
  616. egse/windowing.py +0 -213
  617. egse/zmq/__init__.py +0 -28
  618. egse/zmq/spw.py +0 -160
  619. egse/zmq_ser.py +0 -41
  620. scripts/alerts/cold.yaml +0 -278
  621. scripts/alerts/example_alerts.yaml +0 -54
  622. scripts/alerts/transition.yaml +0 -14
  623. scripts/alerts/warm.yaml +0 -49
  624. scripts/analyse_n_fee_hk_data.py +0 -44
  625. scripts/check_hdf5_files.py +0 -192
  626. scripts/check_register_sync.py +0 -47
  627. scripts/create_hdf5_report.py +0 -295
  628. scripts/csl_model.py +0 -436
  629. scripts/csl_restore_setup.py +0 -230
  630. scripts/export-grafana-dashboards.py +0 -50
  631. scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -59
  632. scripts/fdir/fdir_table.yaml +0 -70
  633. scripts/fdir/fdir_test_recovery.py +0 -11
  634. scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
  635. scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -64
  636. scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -61
  637. scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
  638. scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
  639. scripts/fix_csv.py +0 -80
  640. scripts/n_fee_supply_voltage_calculation.py +0 -92
  641. scripts/playground.py +0 -30
  642. scripts/print_hdf5_hk_data.py +0 -68
  643. scripts/print_register_map.py +0 -43
  644. scripts/sron/commanding/control_heaters.py +0 -44
  645. scripts/sron/commanding/pumpdown.py +0 -46
  646. scripts/sron/commanding/set_pid_setpoint.py +0 -19
  647. scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
  648. scripts/sron/commanding/shutdown_pumps.py +0 -33
  649. scripts/sron/tm_gen/tm_gen_agilent.py +0 -38
  650. scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
  651. scripts/sron/tm_gen/tm_gen_spid.py +0 -13
  652. scripts/update_operational_cgse.py +0 -268
  653. scripts/update_operational_cgse_old.py +0 -273
@@ -1,68 +0,0 @@
1
- from __future__ import annotations
2
- from pathlib import Path
3
-
4
- import click
5
- import rich
6
- from rich.console import Console
7
- from rich.table import Table
8
-
9
- from egse import h5
10
- from egse.fee.nfee import HousekeepingData
11
-
12
- @click.command()
13
- @click.argument('filename')
14
- def print_hk_data(filename: str | Path):
15
- """Prints the updated HK data that is saved in the HDF5 file."""
16
-
17
- filename = Path(filename)
18
-
19
- if filename.exists():
20
- console = Console(width=80)
21
- try:
22
- with h5.get_file(filename, mode='r') as hdf5_file:
23
- rich.print(f"HK data from {filename}", end='')
24
- if "/obsid" in hdf5_file:
25
- obsid = h5.get_data(hdf5_file["/obsid"]).item().decode()
26
- if obsid != 'None':
27
- rich.print(f", OBSID = {obsid}\n")
28
- else:
29
- rich.print()
30
-
31
- # TODO:
32
- # Make a table with 5 columns where the first column is the parameter name
33
- # the next columns the values for each frame
34
- # Detect specific names and convert the values (use dictionary dispatching?)
35
-
36
- tmp_hk_data = {}
37
- tmp_frame_numbers = []
38
-
39
- for frame_number in {0, 1, 2, 3}:
40
- if (key := f"/{frame_number}/hk_data") in hdf5_file:
41
- tmp_frame_numbers.append(frame_number)
42
- hk_data = h5.get_data(hdf5_file[key])
43
- hk_data = HousekeepingData(hk_data)
44
- # rich.print(hk_data)
45
- for par_name in hk_data:
46
- if par_name not in tmp_hk_data:
47
- tmp_hk_data[par_name] = []
48
- tmp_hk_data[par_name].append(hk_data[par_name])
49
-
50
- table = Table(title=f"Housekeeping Data for {obsid}", expand=False)
51
- table.add_column("Parameter")
52
-
53
- for fn in tmp_frame_numbers:
54
- table.add_column(f"Frame {fn}")
55
-
56
- for k, v in tmp_hk_data.items():
57
- table.add_row(str(k), *[f"0x{x:0x}" for x in v])
58
-
59
- console.print(table)
60
-
61
- except OSError as exc:
62
- rich.print(f"{filename=!s}, {exc}")
63
- else:
64
- rich.print(f"no such file {filename!s}")
65
-
66
-
67
- if __name__ == "__main__":
68
- print_hk_data()
@@ -1,43 +0,0 @@
1
- from __future__ import annotations
2
- from pathlib import Path
3
-
4
- import click
5
- import rich
6
-
7
- from egse import h5
8
- from egse.reg import RegisterMap
9
-
10
- @click.command()
11
- @click.argument('filename')
12
- def print_register_map(filename: str | Path):
13
- """
14
- Prints the Register Map that is saved in the HDF5 file.
15
-
16
- The FILENAME argument shall be the full path to the HDF5 file from which the register map is requested.
17
- """
18
-
19
- filename = Path(filename)
20
-
21
- if filename.exists():
22
- try:
23
- with h5.get_file(filename, mode='r') as hdf5_file:
24
- rich.print(f"Register Map from {filename}", end='')
25
- if "/obsid" in hdf5_file:
26
- obsid = h5.get_data(hdf5_file["/obsid"]).item().decode()
27
- if obsid != 'None':
28
- rich.print(f", OBSID = {obsid}\n")
29
- else:
30
- rich.print()
31
-
32
- if "/register" in hdf5_file:
33
- reg_data = h5.get_data(hdf5_file["/register"])
34
- reg_map = RegisterMap("N-FEE", memory_map=reg_data)
35
- rich.print(reg_map)
36
- except OSError as exc:
37
- rich.print(f"{filename=!s}, {exc}")
38
- else:
39
- rich.print(f"no such file {filename!s}")
40
-
41
-
42
- if __name__ == "__main__":
43
- print_register_map()
@@ -1,44 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- import logging
4
- import time
5
-
6
- from argparse import ArgumentParser
7
-
8
- from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
9
-
10
- log = logging.getLogger(__name__)
11
- logging.basicConfig()
12
-
13
- parser = ArgumentParser()
14
- parser.add_argument('device', type=int, help='beaglebone device index [0, 1]')
15
- parser.add_argument('channel', type=int, help='beaglebone pwm channel [0, 3]')
16
- parser.add_argument('setpoint', type=int, help='pwm duty cycle in %%')
17
- args = parser.parse_args()
18
-
19
- assert args.device in [0, 1, 2, 3], 'device index must be in [0 - 3]'
20
- assert args.channel in [0, 1, 2, 3], 'pwm channel must be in [0 - 3]'
21
- assert args.setpoint in range(0, 101), 'pwm duty cycle must be in [0 - 100]'
22
-
23
- try:
24
- beaglebone = BeagleboneProxy()
25
- except Exception as e:
26
- log.error(f'could not connect to beaglebone control server ({e})')
27
- else:
28
- log.info('connected to beaglebone control server')
29
-
30
- try:
31
- beaglebone.set_period(args.device, args.channel, 10000)
32
- beaglebone.set_duty_cycle(args.device, args.channel, (args.setpoint * 100))
33
- if args.setpoint == 0:
34
- beaglebone.set_enable(args.device, args.channel, False)
35
- else:
36
- beaglebone.set_enable(args.device, args.channel, True)
37
- except Exception as e:
38
- log.error(f'could not set duty cycle ({e})')
39
-
40
- while True:
41
- time.sleep(1)
42
- print(beaglebone.get_voltage(args.device, args.channel), 'V')
43
- print(beaglebone.get_current(args.device, args.channel), 'A')
44
- print(beaglebone.get_power(args.device, args.channel), 'W')
@@ -1,46 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- import logging
4
- from time import sleep
5
-
6
- from egse.vacuum.instrutech.igm402 import Igm402Proxy
7
- from egse.vacuum.pfeiffer.tc400 import Tc400Proxy
8
- from egse.vacuum.pfeiffer.acp40 import Acp40Proxy
9
-
10
- log = logging.getLogger(__name__)
11
- logging.basicConfig()
12
-
13
- igm402 = Igm402Proxy()
14
- tc400 = Tc400Proxy()
15
- acp40 = Acp40Proxy()
16
-
17
- # TODO: check vessel door interlock
18
- # TODO: open gate valve
19
-
20
- log.info('Starting ACP40')
21
- acp40.set_enable(enable=True)
22
-
23
- log.info('Waiting for pressure to reach 6E-0 mbar...')
24
- while (igm402.get_cgn_pressure(index=1) > 6E-0):
25
- sleep(1)
26
- log.info('Starting TC400')
27
- tc400.set_pumpingstation(enable=True)
28
- tc400.set_motorpump(enable=True)
29
-
30
- log.info('Waiting for pressure to reach 1.1E-3 mbar...')
31
- while (igm402.get_cgn_pressure(index=1) > 1.1E-3):
32
- last_error = tc400.get_last_error()
33
- if last_error != 0:
34
- log.error(f'TC400 error: {last_error}')
35
- tc400.set_pumpingstation(enable=False)
36
- exit()
37
- sleep(1)
38
-
39
- # log.info('Turn on ionization gauge')
40
- igm402.set_filament_enable(enable=True)
41
-
42
- log.info('Waiting for pressure to reach 1E-5 mbar...')
43
- while (igm402.get_ion_gauge_pressure() > 1E-5):
44
- sleep(1)
45
-
46
- log.info('Ready for cooling')
@@ -1,19 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from argparse import ArgumentParser
4
- from egse.tempcontrol.spid.spid import PidProxy
5
-
6
- parser = ArgumentParser()
7
- parser.add_argument('channel', type=int, help='channel index')
8
- parser.add_argument('setpoint', type=float, help='temperature setpoint')
9
- parser.add_argument('enable', type=bool, help="Enable controller")
10
-
11
- args = parser.parse_args()
12
-
13
- p = PidProxy()
14
-
15
- if args.enable:
16
- p.set_temperature(args.channel, args.setpoint)
17
- p.enable(args.channel)
18
- else:
19
- p.disable(args.channel)
@@ -1,10 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- from egse.tempcontrol.beaglebone.beaglebone import BeagleboneProxy
4
-
5
- bbb = BeagleboneProxy()
6
-
7
- for device in range(4):
8
- for channel in range(4):
9
- bbb.set_enable(device, channel, False)
10
- #print(bbb.get_current(device, channel))
@@ -1,33 +0,0 @@
1
- #!/usr/bin/env python3
2
-
3
- import logging
4
- from time import sleep
5
-
6
- from egse.vacuum.instrutech.igm402 import Igm402Proxy
7
- from egse.vacuum.pfeiffer.tc400 import Tc400Proxy
8
- from egse.vacuum.pfeiffer.acp40 import Acp40Proxy
9
-
10
- log = logging.getLogger(__name__)
11
- logging.basicConfig()
12
-
13
- igm402 = Igm402Proxy()
14
- tc400 = Tc400Proxy()
15
- acp40 = Acp40Proxy()
16
-
17
- # TODO: turn of vacscan filament
18
- # TODO: close gate valve
19
-
20
- log.info('Turn of IGM402 filament')
21
- igm402.set_filament_enable(enable=False)
22
-
23
- log.info('Shut down TC400')
24
- tc400.set_pumpingstation(enable=False)
25
-
26
- log.info('Waiting for tc400 to reach 50 Hz...')
27
- while (tc400.get_active_speed() > 50):
28
- sleep(1)
29
-
30
- log.info('Shut down ACP40')
31
- acp40.set_enable(enable=False)
32
-
33
- log.info('Done')
@@ -1,38 +0,0 @@
1
- from argparse import ArgumentParser
2
-
3
- import pandas as pd
4
-
5
- # Use these names to read the agilent channels from the setup
6
- from egse.state import GlobalState
7
-
8
- # This script generates the tm_dictionary entries for the agilent channels defined in the setup.
9
- # It uses Heino's harnes excel sheet to fill in what each channel is connected to in the description.
10
-
11
- long_names = ['agilent34970_0', 'agilent34970_1', 'agilent34972_0', 'agilent34972_1']
12
- short_names = ['AG34970_0', 'AG34970_1', 'AG34972_0', 'AG34972_1']
13
- storage_mnemonic = ['AG34970-0', 'AG34970-1', 'AG34972-0', 'AG34972-1']
14
- sensor_types = ['two_wire', 'four_wire', 'thermocouples', 'pt100']
15
-
16
- parser = ArgumentParser()
17
- parser.add_argument('--filename', '-f', type=str, required=True, help="path to Heino's connection spreadsheet")
18
- args = parser.parse_args()
19
-
20
- with open(args.filename, 'rb') as f:
21
- harness = pd.read_excel(f)
22
-
23
- setup = GlobalState.setup
24
-
25
- for long_name, short_name, mnemonic in zip(long_names, short_names, storage_mnemonic):
26
- for sensor_type in sensor_types:
27
- for channel in setup.gse[long_name][sensor_type]:
28
-
29
- # find matching column in excel sheet
30
- description = ""
31
- for index, row in harness.iterrows():
32
- if row[1].lower() == long_name and row[2] == channel:
33
- description = row[3]
34
- break
35
-
36
- print(f'{long_name} temperature read-out;{mnemonic};GSRON_{short_name}_R{channel};GSRON_{short_name}_R{channel};timestamp;;;;;{description};;Ohm;;;;;;;;')
37
- print(f'{long_name} temperature read-out;{mnemonic};GSRON_{short_name}_T{channel};GSRON_{short_name}_T{channel};timestamp;;;;;{description};;DegCelsius;;;;;;;;')
38
-
@@ -1,4 +0,0 @@
1
- for board in range(6):
2
- for channel in range(4):
3
- print(f'Beaglebone Temperature Control;BBB_HEATERS;GSRON_HTR_I_{board}_{channel};GSRON_HTR_I_{board}_{channel};timestamp;;;;;Current of beaglebone {board} heater {channel};;Ampère;;;;;;;;')
4
- print(f'Beaglebone Temperature Control;BBB_HEATERS;GSRON_HTR_V_{board}_{channel};GSRON_HTR_V_{board}_{channel};timestamp;;;;;Voltage of beaglebone {board} heater {channel};;Volts;;;;;;;;')
@@ -1,13 +0,0 @@
1
- from egse.state import GlobalState
2
-
3
- setup = GlobalState.setup
4
-
5
- channels = []
6
- for category, channels in setup.gse.spid.configuration.heaters.items():
7
- for channel in channels:
8
- print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_ENABLED;GSRON_PID_CH{channel[0]}_ENABLED;timestamp;;;;;{category};;;;;;;;;;')
9
- print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_SETPOINT;GSRON_PID_CH{channel[0]}_SETPOINT;timestamp;;;;;{category};;DegCelsius;;;;;;;;')
10
- print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_INPUT;GSRON_PID_CH{channel[0]}_INPUT;timestamp;;;;;{category};;DegCelsius;;;;;;;;')
11
- print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_ERROR;GSRON_PID_CH{channel[0]}_ERROR;timestamp;;;;;{category};;DegCelsius;;;;;;;;')
12
- print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_OUTPUT;GSRON_PID_CH{channel[0]}_OUTPUT;timestamp;;;;;{category};;;;;;;;;;')
13
- print(f'PID Controller;SPID;GSRON_PID_CH{channel[0]}_ISUM;GSRON_PID_CH{channel[0]}_ISUM;timestamp;;;;;{category};;;;;;;;;;')
@@ -1,268 +0,0 @@
1
- import logging
2
- import multiprocessing
3
- import os
4
- import sys
5
- import textwrap
6
- from pathlib import Path
7
-
8
- import click
9
- import git
10
- import invoke
11
- import rich
12
- from rich.console import Console
13
-
14
- multiprocessing.current_process().name = "update_cgse"
15
-
16
- from egse.system import chdir
17
-
18
- THIS_FILE_LOCATION = Path(__file__).parent
19
-
20
- # The ROOT_PROJECT_FOLDER is the location where the Common-EGSE was installed.
21
- # For development installations, this is where the git repository was cloned,
22
- # for the operational system, this is usually '/cgse', but should match the
23
- # PLATO_INSTALL_LOCATION environment variable in any case.
24
-
25
- ROOT_PROJECT_FOLDER = THIS_FILE_LOCATION / "../.."
26
-
27
- MODULE_LOGGER = logging.getLogger("egse.scripts")
28
-
29
-
30
- class DirtyRepoError(Exception):
31
- pass
32
-
33
-
34
- class GitCommandError(Exception):
35
- pass
36
-
37
-
38
- def check_and_report_dirty_repo():
39
- repo = git.Repo(Path.cwd())
40
-
41
- if repo.is_dirty(untracked_files=False):
42
- rich.print("You have uncommitted changes, unable to install the Common-EGSE.")
43
-
44
- for item in repo.index.diff(None):
45
- rich.print(f" [red]Modified: {item.a_path}")
46
-
47
- rich.print("Stash or submit your changes to GitHub.")
48
-
49
- raise DirtyRepoError()
50
-
51
-
52
- def run_shell_command(cmd: str, hide: bool = True, warn: bool = True, msg: str = None):
53
- if msg is None:
54
- rich.print(f"Executing '{cmd}'...", end="", flush=True)
55
- else:
56
- rich.print(f"{msg}...", end="", flush=True)
57
-
58
- response = invoke.run(cmd, hide=hide, warn=warn)
59
-
60
- if response.return_code:
61
- rich.print("[red]FAILED[/red]")
62
- if response.stdout:
63
- rich.print(f"{response.stdout}")
64
- rich.print(f"[red]{response.stderr}[/]")
65
- raise GitCommandError()
66
- else:
67
- rich.print("[green]succeeded[/green]")
68
-
69
- return response
70
-
71
-
72
- def is_operational_install(location: str):
73
- # location can be the following:
74
- #
75
- # * root folder where Common-EGSE is installed, e.g. /cgse/lib/python
76
- # * the actual 'egg' folder where Common-EGSE is installed,
77
- # e.g. /cgse/lib/python/Common_EGSE-2021.3_SRON_RC37-py3.8.egg
78
-
79
- rich.print(f"{location=}")
80
-
81
- if ".egg" in location:
82
- return True
83
-
84
- candidates = [path for path in os.listdir(location) if path.startswith("Common_EGSE") or path.startswith("cgse")]
85
-
86
- rich.print(f"{candidates=}")
87
-
88
- if candidates and candidates[0].endswith(".egg"):
89
- return True
90
-
91
- # add other tests here that might indicate operational install
92
-
93
- return False
94
-
95
-
96
- @click.group()
97
- def cli():
98
- pass
99
-
100
-
101
- @cli.command()
102
- @click.option("--tag", help="The Release number to install.")
103
- def ops(tag=None):
104
- """
105
- Update the Common-EGSE on the operational machine. An operational installation is different
106
- from a developer installation. There is no virtual environment and the all required Python
107
- packages, including the Common-EGSE are installed at a specific location. The installation
108
- process makes use of the following environment variables:
109
-
110
- * PLATO_COMMON_EGSE_PATH: the location of the plato-common-egse repository on your machine, e.g., '~/git/plato-common-egse'
111
-
112
- * PLATO_INSTALL_LOCATION: the location where the packages shall be installed, usually '/cgse'
113
-
114
- Don't update the operational system without a tag.
115
-
116
- The following commands will be executed:
117
-
118
- * git fetch updates
119
- * get checkout develop
120
- * git checkout tags/<tag> -b <tag>-branch
121
- * python -m pip install --home=$PLATO_INSTALL_LOCATION .
122
-
123
- You will need to manually restart the core services as root on the egse-server:
124
-
125
- * sudo systemctl restart log_cs cm_cs sm_cs pm_cs dyn_cs
126
-
127
- NOTE: This command only works on an installation with setuptools (not a development
128
- installation). The installation must have been done in the location set by the
129
- environment variable PLATO_INSTALL_LOCATION.
130
-
131
- Args:
132
- tag: the tag that needs to be used for the update.
133
-
134
- """
135
-
136
- try:
137
- plato_install_location = os.environ["PLATO_INSTALL_LOCATION"]
138
- MODULE_LOGGER.info(f"{plato_install_location=}")
139
- except KeyError:
140
- rich.print(
141
- "[red]On an operational system, the PLATO_INSTALL_LOCATION environment variable must "
142
- "be set.[/]\n"
143
- "Please set this to the root folder of the installation, usually [default]'/cgse'."
144
- )
145
- return
146
-
147
- if not Path(plato_install_location).exists():
148
- rich.print(
149
- f"[orange3]I didn't find the '{plato_install_location}' location on your system.[/]\n"
150
- "Please check if the PLATO_INSTALL_LOCATION is set to the correct folder."
151
- )
152
- return
153
-
154
- try:
155
- plato_cgse_location = os.environ["PLATO_COMMON_EGSE_PATH"]
156
- MODULE_LOGGER.info(f"{plato_cgse_location=}")
157
- except KeyError:
158
- rich.print(
159
- "[red]On an operational system, the PLATO_COMMON_EGSE_PATH environment variable must "
160
- "be set.[/]\nPlease set this to the root folder of the cloned repository, "
161
- "usually [default]'~/git/plato-common-egse'."
162
- )
163
- return
164
-
165
- with chdir(plato_cgse_location):
166
- rich.print("Updating plato-common-egse...")
167
-
168
- try:
169
- run_shell_command("git fetch updates")
170
- run_shell_command("git checkout develop")
171
- except GitCommandError:
172
- return
173
-
174
- try:
175
- check_and_report_dirty_repo()
176
- except DirtyRepoError:
177
- return
178
-
179
- if tag:
180
- try:
181
- run_shell_command(f"git checkout tags/{tag} -b {tag}-branch")
182
- run_shell_command(f"{sys.executable} -m pip install --prefix={plato_install_location} . ")
183
- except GitCommandError:
184
- return
185
- else:
186
- # git rev-list --tags --timestamp --no-walk | sort -nr | head -n1 | cut -f 2 -d ' ' | xargs git describe --contains
187
- rich.print("Usage: update_cgse ops --tag=<tag name>")
188
- rc = invoke.run("git describe --tags --abbrev=0", hide="stdout")
189
- rich.print(f"The latest tag name is '{rc.stdout.strip()}'.")
190
- return
191
-
192
- console = Console()
193
- console.print(
194
- textwrap.dedent(
195
- f"""
196
- To complete the installation process, perform the following actions:
197
-
198
- On the egse-client:
199
- * stop all device control servers from the PM GUI
200
-
201
- On the egse-server:
202
- * run (in the root folder of plato-common-egse): [grey50]invoke stop-core-egse[/]
203
- * the core services should automatically be re-started by systemd,
204
- * (if not, run (in the root folder of plato-common-egse): [grey50]invoke start-core-egse[/])
205
- * Alternatively, you can run: [grey50]sudo systemctl restart log_cs sm_cs cm_cs pm_cs syn_cs[/]
206
-
207
- """
208
- ), highlight=False
209
- )
210
-
211
-
212
-
213
- @cli.command()
214
- def develop():
215
- """
216
- Update the Common-EGSE on a develop machine.
217
-
218
- The following commands will be executed in the background:
219
-
220
- * git fetch updates
221
-
222
- * git rebase updates/develop
223
-
224
- * python3 -m pip install -e .
225
-
226
- """
227
-
228
- with chdir(ROOT_PROJECT_FOLDER):
229
- rich.print("Updating plato-common-egse development environment.")
230
-
231
- try:
232
- check_and_report_dirty_repo()
233
- except DirtyRepoError:
234
- return
235
-
236
- try:
237
- run_shell_command("git fetch updates")
238
- run_shell_command("git checkout develop")
239
- run_shell_command("git rebase updates/develop")
240
- run_shell_command(f"{sys.executable} -m pip install -e .")
241
- response = run_shell_command(f"{sys.executable} -m egse.version")
242
- except GitCommandError:
243
- return
244
-
245
- release = response.tail("stdout").split("\n")[-1]
246
-
247
- try:
248
- response = run_shell_command("git describe --tags --long")
249
- tag = response.stdout.strip().split("-")
250
-
251
- # The tag format is:
252
- # * the annotated tag
253
- # * the number of commits since the tag
254
- # * abbreviated commit name (starts with the letter 'g')
255
-
256
- number_of_commits = tag[-2]
257
- bare_tag = "-".join(tag[:-2])
258
-
259
- except GitCommandError:
260
- return
261
-
262
- rich.print(f"{release.strip()}")
263
- if number_of_commits != 0:
264
- rich.print(f"Number of commits since {bare_tag}: {number_of_commits}")
265
-
266
-
267
- if __name__ == "__main__":
268
- cli()