cgse 2024.7.0__py3-none-any.whl → 2025.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (664) hide show
  1. README.md +27 -0
  2. bump.py +85 -0
  3. cgse-2025.0.1.dist-info/METADATA +38 -0
  4. cgse-2025.0.1.dist-info/RECORD +5 -0
  5. {cgse-2024.7.0.dist-info → cgse-2025.0.1.dist-info}/WHEEL +1 -2
  6. cgse-2024.7.0.dist-info/COPYING +0 -674
  7. cgse-2024.7.0.dist-info/COPYING.LESSER +0 -165
  8. cgse-2024.7.0.dist-info/METADATA +0 -144
  9. cgse-2024.7.0.dist-info/RECORD +0 -660
  10. cgse-2024.7.0.dist-info/entry_points.txt +0 -75
  11. cgse-2024.7.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 -5238
  15. egse/aeu/aeu_awg.yaml +0 -265
  16. egse/aeu/aeu_crio.yaml +0 -273
  17. egse/aeu/aeu_cs.py +0 -627
  18. egse/aeu/aeu_devif.py +0 -321
  19. egse/aeu/aeu_main_ui.py +0 -903
  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 -233
  46. egse/alert/alertman_ui.py +0 -600
  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 -122
  51. egse/alert/gsm/beaglebone_protocol.py +0 -46
  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 -132
  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 -1058
  66. egse/confman/confman.yaml +0 -70
  67. egse/confman/confman_cs.py +0 -240
  68. egse/confman/confman_ui.py +0 -381
  69. egse/confman/setup_ui.py +0 -565
  70. egse/control.py +0 -632
  71. egse/coordinates/__init__.py +0 -534
  72. egse/coordinates/avoidance.py +0 -100
  73. egse/coordinates/cslmodel.py +0 -127
  74. egse/coordinates/laser_tracker_to_dict.py +0 -122
  75. egse/coordinates/point.py +0 -707
  76. egse/coordinates/pyplot.py +0 -194
  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 -1240
  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 -514
  110. egse/device.py +0 -269
  111. egse/dpu/__init__.py +0 -2698
  112. egse/dpu/ccd_ui.py +0 -514
  113. egse/dpu/dpu.py +0 -783
  114. egse/dpu/dpu.yaml +0 -153
  115. egse/dpu/dpu_cs.py +0 -272
  116. egse/dpu/dpu_ui.py +0 -671
  117. egse/dpu/fitsgen.py +0 -2096
  118. egse/dpu/fitsgen_ui.py +0 -399
  119. egse/dpu/hdf5_model.py +0 -332
  120. egse/dpu/hdf5_ui.py +0 -277
  121. egse/dpu/hdf5_viewer.py +0 -506
  122. egse/dpu/hk_ui.py +0 -468
  123. egse/dpu_commands.py +0 -81
  124. egse/dsi/__init__.py +0 -33
  125. egse/dsi/_libesl.py +0 -232
  126. egse/dsi/constants.py +0 -296
  127. egse/dsi/esl.py +0 -630
  128. egse/dsi/rmap.py +0 -444
  129. egse/dsi/rmapci.py +0 -39
  130. egse/dsi/spw.py +0 -335
  131. egse/dsi/spw_state.py +0 -29
  132. egse/dummy.py +0 -318
  133. egse/dyndummy.py +0 -179
  134. egse/env.py +0 -278
  135. egse/exceptions.py +0 -88
  136. egse/fdir/__init__.py +0 -26
  137. egse/fdir/fdir_manager.py +0 -85
  138. egse/fdir/fdir_manager.yaml +0 -37
  139. egse/fdir/fdir_manager_controller.py +0 -136
  140. egse/fdir/fdir_manager_cs.py +0 -164
  141. egse/fdir/fdir_manager_interface.py +0 -15
  142. egse/fdir/fdir_remote.py +0 -73
  143. egse/fdir/fdir_remote.yaml +0 -30
  144. egse/fdir/fdir_remote_controller.py +0 -30
  145. egse/fdir/fdir_remote_cs.py +0 -94
  146. egse/fdir/fdir_remote_interface.py +0 -9
  147. egse/fdir/fdir_remote_popup.py +0 -26
  148. egse/fee/__init__.py +0 -106
  149. egse/fee/f_fee_register.yaml +0 -43
  150. egse/fee/feesim.py +0 -914
  151. egse/fee/n_fee_hk.py +0 -768
  152. egse/fee/nfee.py +0 -188
  153. egse/filterwheel/__init__.py +0 -4
  154. egse/filterwheel/eksma/__init__.py +0 -49
  155. egse/filterwheel/eksma/fw8smc4.py +0 -657
  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 -82
  160. egse/filterwheel/eksma/fw8smc4_ui.py +0 -940
  161. egse/filterwheel/eksma/fw8smc5.py +0 -115
  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 -1065
  168. egse/filterwheel/eksma/testpythonfw.py +0 -215
  169. egse/fov/__init__.py +0 -65
  170. egse/fov/fov_hk.py +0 -710
  171. egse/fov/fov_ui.py +0 -859
  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 -138
  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 -1285
  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 -587
  194. egse/gui/states.py +0 -148
  195. egse/gui/stripchart.py +0 -729
  196. egse/gui/styles.qss +0 -48
  197. egse/gui/switch.py +0 -112
  198. egse/h5.py +0 -274
  199. egse/help/__init__.py +0 -0
  200. egse/help/help_ui.py +0 -126
  201. egse/hexapod/__init__.py +0 -32
  202. egse/hexapod/symetrie/__init__.py +0 -137
  203. egse/hexapod/symetrie/alpha.py +0 -874
  204. egse/hexapod/symetrie/dynalpha.py +0 -1387
  205. egse/hexapod/symetrie/hexapod_ui.py +0 -1516
  206. egse/hexapod/symetrie/pmac.py +0 -1010
  207. egse/hexapod/symetrie/pmac_regex.py +0 -83
  208. egse/hexapod/symetrie/puna.py +0 -1167
  209. egse/hexapod/symetrie/puna.yaml +0 -193
  210. egse/hexapod/symetrie/puna_cs.py +0 -195
  211. egse/hexapod/symetrie/puna_protocol.py +0 -134
  212. egse/hexapod/symetrie/puna_ui.py +0 -433
  213. egse/hexapod/symetrie/punaplus.py +0 -107
  214. egse/hexapod/symetrie/zonda.py +0 -872
  215. egse/hexapod/symetrie/zonda.yaml +0 -337
  216. egse/hexapod/symetrie/zonda_cs.py +0 -172
  217. egse/hexapod/symetrie/zonda_devif.py +0 -414
  218. egse/hexapod/symetrie/zonda_protocol.py +0 -123
  219. egse/hexapod/symetrie/zonda_ui.py +0 -449
  220. egse/hk.py +0 -791
  221. egse/icons/aeu-cs-start.svg +0 -117
  222. egse/icons/aeu-cs-stop.svg +0 -118
  223. egse/icons/aeu-cs.svg +0 -107
  224. egse/icons/aeu_cs-started.svg +0 -112
  225. egse/icons/aeu_cs-stopped.svg +0 -112
  226. egse/icons/aeu_cs.svg +0 -55
  227. egse/icons/alert.svg +0 -1
  228. egse/icons/arrow-double-left.png +0 -0
  229. egse/icons/arrow-double-right.png +0 -0
  230. egse/icons/arrow-up.svg +0 -11
  231. egse/icons/backward.svg +0 -1
  232. egse/icons/busy.svg +0 -1
  233. egse/icons/cleaning.svg +0 -115
  234. egse/icons/color-scheme.svg +0 -1
  235. egse/icons/cs-connected-alert.svg +0 -91
  236. egse/icons/cs-connected-disabled.svg +0 -43
  237. egse/icons/cs-connected.svg +0 -89
  238. egse/icons/cs-not-connected.svg +0 -44
  239. egse/icons/double-left-arrow.svg +0 -1
  240. egse/icons/double-right-arrow.svg +0 -1
  241. egse/icons/erase-disabled.svg +0 -19
  242. egse/icons/erase.svg +0 -59
  243. egse/icons/fitsgen-start.svg +0 -47
  244. egse/icons/fitsgen-stop.svg +0 -48
  245. egse/icons/fitsgen.svg +0 -1
  246. egse/icons/forward.svg +0 -1
  247. egse/icons/fov-hk-start.svg +0 -33
  248. egse/icons/fov-hk-stop.svg +0 -37
  249. egse/icons/fov-hk.svg +0 -1
  250. egse/icons/front-desk.svg +0 -1
  251. egse/icons/home-actioned.svg +0 -15
  252. egse/icons/home-disabled.svg +0 -15
  253. egse/icons/home.svg +0 -13
  254. egse/icons/info.svg +0 -1
  255. egse/icons/invalid.png +0 -0
  256. egse/icons/led-green.svg +0 -20
  257. egse/icons/led-grey.svg +0 -20
  258. egse/icons/led-orange.svg +0 -20
  259. egse/icons/led-red.svg +0 -20
  260. egse/icons/led-square-green.svg +0 -134
  261. egse/icons/led-square-grey.svg +0 -134
  262. egse/icons/led-square-orange.svg +0 -134
  263. egse/icons/led-square-red.svg +0 -134
  264. egse/icons/limit-switch-all-green.svg +0 -115
  265. egse/icons/limit-switch-all-red.svg +0 -117
  266. egse/icons/limit-switch-el+.svg +0 -116
  267. egse/icons/limit-switch-el-.svg +0 -117
  268. egse/icons/location-marker.svg +0 -1
  269. egse/icons/logo-dpu.svg +0 -48
  270. egse/icons/logo-gimbal.svg +0 -112
  271. egse/icons/logo-huber.svg +0 -23
  272. egse/icons/logo-ogse.svg +0 -31
  273. egse/icons/logo-puna.svg +0 -92
  274. egse/icons/logo-tcs.svg +0 -29
  275. egse/icons/logo-zonda.svg +0 -66
  276. egse/icons/maximize.svg +0 -1
  277. egse/icons/meter.svg +0 -1
  278. egse/icons/more.svg +0 -45
  279. egse/icons/n-fee-hk-start.svg +0 -24
  280. egse/icons/n-fee-hk-stop.svg +0 -25
  281. egse/icons/n-fee-hk.svg +0 -83
  282. egse/icons/observing-off.svg +0 -46
  283. egse/icons/observing-on.svg +0 -46
  284. egse/icons/open-document-hdf5.png +0 -0
  285. egse/icons/open-document-hdf5.svg +0 -21
  286. egse/icons/ops-mode.svg +0 -1
  287. egse/icons/play-green.svg +0 -17
  288. egse/icons/plugged-disabled.svg +0 -27
  289. egse/icons/plugged.svg +0 -21
  290. egse/icons/pm_ui.svg +0 -1
  291. egse/icons/power-button-green.svg +0 -27
  292. egse/icons/power-button-red.svg +0 -27
  293. egse/icons/power-button.svg +0 -27
  294. egse/icons/radar.svg +0 -1
  295. egse/icons/radioactive.svg +0 -2
  296. egse/icons/reload.svg +0 -1
  297. egse/icons/remote-control-off.svg +0 -28
  298. egse/icons/remote-control-on.svg +0 -28
  299. egse/icons/repeat-blue.svg +0 -15
  300. egse/icons/repeat.svg +0 -1
  301. egse/icons/settings.svg +0 -1
  302. egse/icons/shrink.svg +0 -1
  303. egse/icons/shutter.svg +0 -1
  304. egse/icons/sign-off.svg +0 -1
  305. egse/icons/sign-on.svg +0 -1
  306. egse/icons/sim-mode.svg +0 -1
  307. egse/icons/small-buttons-go.svg +0 -20
  308. egse/icons/small-buttons-minus.svg +0 -51
  309. egse/icons/small-buttons-plus.svg +0 -51
  310. egse/icons/sponge.svg +0 -220
  311. egse/icons/start-button-disabled.svg +0 -84
  312. egse/icons/start-button.svg +0 -50
  313. egse/icons/stop-button-disabled.svg +0 -84
  314. egse/icons/stop-button.svg +0 -50
  315. egse/icons/stop-red.svg +0 -17
  316. egse/icons/stop.svg +0 -1
  317. egse/icons/switch-disabled-square.svg +0 -87
  318. egse/icons/switch-disabled.svg +0 -15
  319. egse/icons/switch-off-square.svg +0 -87
  320. egse/icons/switch-off.svg +0 -72
  321. egse/icons/switch-on-square.svg +0 -87
  322. egse/icons/switch-on.svg +0 -61
  323. egse/icons/temperature-control.svg +0 -44
  324. egse/icons/th_ui_logo.svg +0 -1
  325. egse/icons/unplugged.svg +0 -23
  326. egse/icons/unvalid.png +0 -0
  327. egse/icons/user-interface.svg +0 -1
  328. egse/icons/vacuum.svg +0 -1
  329. egse/icons/valid.png +0 -0
  330. egse/icons/zoom-to-pixel-dark.svg +0 -64
  331. egse/icons/zoom-to-pixel-white.svg +0 -36
  332. egse/images/big-rotation-stage.png +0 -0
  333. egse/images/connected-100.png +0 -0
  334. egse/images/cross.svg +0 -6
  335. egse/images/disconnected-100.png +0 -0
  336. egse/images/gui-icon.png +0 -0
  337. egse/images/home.svg +0 -6
  338. egse/images/info-icon.png +0 -0
  339. egse/images/led-black.svg +0 -89
  340. egse/images/led-green.svg +0 -85
  341. egse/images/led-orange.svg +0 -85
  342. egse/images/led-red.svg +0 -85
  343. egse/images/load-icon.png +0 -0
  344. egse/images/load-setup.png +0 -0
  345. egse/images/load.png +0 -0
  346. egse/images/pause.png +0 -0
  347. egse/images/play-button.svg +0 -8
  348. egse/images/play.png +0 -0
  349. egse/images/process-status.png +0 -0
  350. egse/images/restart.png +0 -0
  351. egse/images/search.png +0 -0
  352. egse/images/sma.png +0 -0
  353. egse/images/start.png +0 -0
  354. egse/images/stop-button.svg +0 -8
  355. egse/images/stop.png +0 -0
  356. egse/images/switch-off.svg +0 -48
  357. egse/images/switch-on.svg +0 -48
  358. egse/images/undo.png +0 -0
  359. egse/images/update-button.svg +0 -11
  360. egse/imageviewer/exposureselection.py +0 -475
  361. egse/imageviewer/imageviewer.py +0 -198
  362. egse/imageviewer/matchfocalplane.py +0 -179
  363. egse/imageviewer/subfieldposition.py +0 -133
  364. egse/lampcontrol/__init__.py +0 -4
  365. egse/lampcontrol/beaglebone/beaglebone.py +0 -178
  366. egse/lampcontrol/beaglebone/beaglebone.yaml +0 -62
  367. egse/lampcontrol/beaglebone/beaglebone_cs.py +0 -106
  368. egse/lampcontrol/beaglebone/beaglebone_devif.py +0 -150
  369. egse/lampcontrol/beaglebone/beaglebone_protocol.py +0 -73
  370. egse/lampcontrol/energetiq/__init__.py +0 -22
  371. egse/lampcontrol/energetiq/eq99.yaml +0 -98
  372. egse/lampcontrol/energetiq/lampEQ99.py +0 -283
  373. egse/lampcontrol/energetiq/lampEQ99_cs.py +0 -128
  374. egse/lampcontrol/energetiq/lampEQ99_devif.py +0 -158
  375. egse/lampcontrol/energetiq/lampEQ99_encode_decode_errors.py +0 -73
  376. egse/lampcontrol/energetiq/lampEQ99_protocol.py +0 -71
  377. egse/lampcontrol/energetiq/lampEQ99_ui.py +0 -465
  378. egse/lib/CentOS-7/EtherSpaceLink_v34_86.dylib +0 -0
  379. egse/lib/CentOS-8/ESL-RMAP_v34_86.dylib +0 -0
  380. egse/lib/CentOS-8/EtherSpaceLink_v34_86.dylib +0 -0
  381. egse/lib/Debian/ESL-RMAP_v34_86.dylib +0 -0
  382. egse/lib/Debian/EtherSpaceLink_v34_86.dylib +0 -0
  383. egse/lib/Debian/libetherspacelink_v35_21.dylib +0 -0
  384. egse/lib/Linux/ESL-RMAP_v34_86.dylib +0 -0
  385. egse/lib/Linux/EtherSpaceLink_v34_86.dylib +0 -0
  386. egse/lib/Ubuntu-20/ESL-RMAP_v34_86.dylib +0 -0
  387. egse/lib/Ubuntu-20/EtherSpaceLink_v34_86.dylib +0 -0
  388. egse/lib/gssw/python3-gssw_2.2.3+31f63c9f-1_all.deb +0 -0
  389. egse/lib/ximc/__pycache__/pyximc.cpython-38 2.pyc +0 -0
  390. egse/lib/ximc/__pycache__/pyximc.cpython-38.pyc +0 -0
  391. egse/lib/ximc/libximc.framework/Frameworks/libbindy.dylib +0 -0
  392. egse/lib/ximc/libximc.framework/Frameworks/libxiwrapper.dylib +0 -0
  393. egse/lib/ximc/libximc.framework/Headers/ximc.h +0 -5510
  394. egse/lib/ximc/libximc.framework/Resources/Info.plist +0 -42
  395. egse/lib/ximc/libximc.framework/Resources/keyfile.sqlite +0 -0
  396. egse/lib/ximc/libximc.framework/libbindy.so +0 -0
  397. egse/lib/ximc/libximc.framework/libximc +0 -0
  398. egse/lib/ximc/libximc.framework/libximc.so +0 -0
  399. egse/lib/ximc/libximc.framework/libximc.so.7.0.0 +0 -0
  400. egse/lib/ximc/libximc.framework/libxiwrapper.so +0 -0
  401. egse/lib/ximc/pyximc.py +0 -922
  402. egse/listener.py +0 -179
  403. egse/logger/__init__.py +0 -243
  404. egse/logger/log_cs.py +0 -321
  405. egse/metrics.py +0 -102
  406. egse/mixin.py +0 -464
  407. egse/monitoring.py +0 -95
  408. egse/ni/alarms/__init__.py +0 -26
  409. egse/ni/alarms/cdaq9375.py +0 -300
  410. egse/ni/alarms/cdaq9375.yaml +0 -89
  411. egse/ni/alarms/cdaq9375_cs.py +0 -130
  412. egse/ni/alarms/cdaq9375_devif.py +0 -183
  413. egse/ni/alarms/cdaq9375_protocol.py +0 -48
  414. egse/obs_inspection.py +0 -165
  415. egse/observer.py +0 -41
  416. egse/obsid.py +0 -163
  417. egse/powermeter/__init__.py +0 -0
  418. egse/powermeter/ni/__init__.py +0 -38
  419. egse/powermeter/ni/cdaq9184.py +0 -224
  420. egse/powermeter/ni/cdaq9184.yaml +0 -73
  421. egse/powermeter/ni/cdaq9184_cs.py +0 -130
  422. egse/powermeter/ni/cdaq9184_devif.py +0 -201
  423. egse/powermeter/ni/cdaq9184_protocol.py +0 -48
  424. egse/powermeter/ni/cdaq9184_ui.py +0 -544
  425. egse/powermeter/thorlabs/__init__.py +0 -25
  426. egse/powermeter/thorlabs/pm100a.py +0 -380
  427. egse/powermeter/thorlabs/pm100a.yaml +0 -132
  428. egse/powermeter/thorlabs/pm100a_cs.py +0 -136
  429. egse/powermeter/thorlabs/pm100a_devif.py +0 -127
  430. egse/powermeter/thorlabs/pm100a_protocol.py +0 -80
  431. egse/powermeter/thorlabs/pm100a_ui.py +0 -725
  432. egse/process.py +0 -451
  433. egse/procman/__init__.py +0 -834
  434. egse/procman/cannot_start_process_popup.py +0 -43
  435. egse/procman/procman.yaml +0 -49
  436. egse/procman/procman_cs.py +0 -201
  437. egse/procman/procman_ui.py +0 -2081
  438. egse/protocol.py +0 -605
  439. egse/proxy.py +0 -531
  440. egse/randomwalk.py +0 -140
  441. egse/reg.py +0 -585
  442. egse/reload.py +0 -122
  443. egse/reprocess.py +0 -693
  444. egse/resource.py +0 -333
  445. egse/rmap.py +0 -406
  446. egse/rst.py +0 -135
  447. egse/search.py +0 -182
  448. egse/serialdevice.py +0 -190
  449. egse/services.py +0 -247
  450. egse/services.yaml +0 -68
  451. egse/settings.py +0 -379
  452. egse/settings.yaml +0 -980
  453. egse/setup.py +0 -1181
  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 -71
  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 -1401
  473. egse/stages/__init__.py +0 -12
  474. egse/stages/aerotech/ensemble.py +0 -245
  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 -188
  482. egse/stages/arun/smd3.py +0 -110
  483. egse/stages/arun/smd3.yaml +0 -68
  484. egse/stages/arun/smd3_controller.py +0 -470
  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 -920
  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 -113
  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 -1067
  500. egse/storage/persistence.py +0 -2295
  501. egse/storage/storage.yaml +0 -79
  502. egse/storage/storage_cs.py +0 -231
  503. egse/styles/dark.qss +0 -343
  504. egse/styles/default.qss +0 -48
  505. egse/synoptics/__init__.py +0 -417
  506. egse/synoptics/syn.yaml +0 -9
  507. egse/synoptics/syn_cs.py +0 -195
  508. egse/system.py +0 -1611
  509. egse/tcs/__init__.py +0 -14
  510. egse/tcs/tcs.py +0 -879
  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 -180
  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 -114
  522. egse/tempcontrol/agilent/agilent34970_devif.py +0 -182
  523. egse/tempcontrol/agilent/agilent34970_protocol.py +0 -96
  524. egse/tempcontrol/agilent/agilent34972.py +0 -111
  525. egse/tempcontrol/agilent/agilent34972.yaml +0 -44
  526. egse/tempcontrol/agilent/agilent34972_cs.py +0 -115
  527. egse/tempcontrol/agilent/agilent34972_devif.py +0 -189
  528. egse/tempcontrol/agilent/agilent34972_protocol.py +0 -98
  529. egse/tempcontrol/beaglebone/beaglebone.py +0 -341
  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 -134
  533. egse/tempcontrol/beaglebone/beaglebone_ui.py +0 -674
  534. egse/tempcontrol/digalox/digalox.py +0 -115
  535. egse/tempcontrol/digalox/digalox.yaml +0 -36
  536. egse/tempcontrol/digalox/digalox_cs.py +0 -108
  537. egse/tempcontrol/digalox/digalox_protocol.py +0 -56
  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 -79
  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 -76
  551. egse/tempcontrol/lakeshore/lsci_ui.py +0 -387
  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 -723
  559. egse/tempcontrol/srs/__init__.py +0 -22
  560. egse/tempcontrol/srs/ptc10.py +0 -867
  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 -116
  564. egse/tempcontrol/srs/ptc10_protocol.py +0 -39
  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 -159
  575. egse/vacuum/beaglebone/beaglebone_protocol.py +0 -192
  576. egse/vacuum/beaglebone/beaglebone_ui.py +0 -638
  577. egse/vacuum/instrutech/igm402.py +0 -91
  578. egse/vacuum/instrutech/igm402.yaml +0 -90
  579. egse/vacuum/instrutech/igm402_controller.py +0 -124
  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 -100
  585. egse/vacuum/keller/leo3.yaml +0 -38
  586. egse/vacuum/keller/leo3_controller.py +0 -81
  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 -313
  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 -701
  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 -37
  602. egse/vacuum/pfeiffer/tc400.py +0 -87
  603. egse/vacuum/pfeiffer/tc400.yaml +0 -83
  604. egse/vacuum/pfeiffer/tc400_controller.py +0 -136
  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 -35
  608. egse/vacuum/pfeiffer/tpg261.py +0 -80
  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 -59
  613. egse/vacuum/pfeiffer/tpg261_simulator.py +0 -23
  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 -52
  625. scripts/check_hdf5_files.py +0 -192
  626. scripts/check_register_sync.py +0 -47
  627. scripts/check_tcs_calib_coef.py +0 -90
  628. scripts/correct_ccd_cold_temperature_cal.py +0 -157
  629. scripts/create_hdf5_report.py +0 -293
  630. scripts/csl_model.py +0 -420
  631. scripts/csl_restore_setup.py +0 -229
  632. scripts/export-grafana-dashboards.py +0 -49
  633. scripts/fdir/cs_recovery/fdir_cs_recovery.py +0 -54
  634. scripts/fdir/fdir_table.yaml +0 -70
  635. scripts/fdir/fdir_test_recovery.py +0 -10
  636. scripts/fdir/hw_recovery/fdir_agilent_hw_recovery.py +0 -73
  637. scripts/fdir/limit_recovery/fdir_agilent_limit.py +0 -61
  638. scripts/fdir/limit_recovery/fdir_bb_heater_limit.py +0 -59
  639. scripts/fdir/limit_recovery/fdir_ensemble_limit.py +0 -33
  640. scripts/fdir/limit_recovery/fdir_pressure_limit_recovery.py +0 -71
  641. scripts/fix_csv.py +0 -80
  642. scripts/ias/correct_ccd_temp_cal_elfique.py +0 -43
  643. scripts/ias/correct_ccd_temp_cal_floreffe.py +0 -43
  644. scripts/ias/correct_trp_swap_achel.py +0 -199
  645. scripts/inta/correct_ccd_temp_cal_duvel.py +0 -43
  646. scripts/inta/correct_ccd_temp_cal_gueuze.py +0 -43
  647. scripts/n_fee_supply_voltage_calculation.py +0 -92
  648. scripts/playground.py +0 -30
  649. scripts/print_hdf5_hk_data.py +0 -68
  650. scripts/print_register_map.py +0 -43
  651. scripts/remove_lines_between_matches.py +0 -188
  652. scripts/sron/commanding/control_heaters.py +0 -44
  653. scripts/sron/commanding/pumpdown.py +0 -46
  654. scripts/sron/commanding/set_pid_setpoint.py +0 -19
  655. scripts/sron/commanding/shutdown_bbb_heaters.py +0 -10
  656. scripts/sron/commanding/shutdown_pumps.py +0 -33
  657. scripts/sron/correct_mgse_coordinates_brigand_chimay.py +0 -272
  658. scripts/sron/correct_trp_swap_brigand.py +0 -204
  659. scripts/sron/gimbal_conversions.py +0 -75
  660. scripts/sron/tm_gen/tm_gen_agilent.py +0 -37
  661. scripts/sron/tm_gen/tm_gen_heaters.py +0 -4
  662. scripts/sron/tm_gen/tm_gen_spid.py +0 -13
  663. scripts/update_operational_cgse.py +0 -268
  664. scripts/update_operational_cgse_old.py +0 -273
@@ -1,874 +0,0 @@
1
- from egse.decorators import dynamic_interface
2
-
3
-
4
- class AlphaControllerInterface:
5
- @dynamic_interface
6
- def info(self):
7
- """Returns basic information about the hexapod and the controller.
8
-
9
- Returns:
10
- a multiline response message containing the device info.
11
- Raises:
12
- HexapodError: when information can not be retrieved.
13
- """
14
- raise NotImplementedError
15
-
16
- @dynamic_interface
17
- def reset(self, wait=True):
18
- """Completely resets the Hexapod hardware controller with the standard boot cycle.
19
-
20
- Args:
21
- wait (bool): after the reset command has been sent to the controller, wait
22
- for 30 seconds which should complete the cycle, i.e. this command will
23
- only return after 30 seconds.
24
-
25
- .. Note::
26
- This command is equivalent to power cycling the controller manually.
27
-
28
- """
29
- raise NotImplementedError
30
-
31
- @dynamic_interface
32
- def homing(self):
33
- """Start the homing cycle for the Hexapod PUNA.
34
-
35
- Homing is required before performing a control movement. Without absolute encoders,
36
- the homing is performed with a hexapod movement until detecting the reference sensor
37
- on each of the actuators. The Hexapod will go to a position were the sensors are
38
- reached that signal a known calibrated position and then returns to the zero position.
39
-
40
- Whenever a homing is performed, the method will return before the actual movement
41
- is finished.
42
-
43
- The homing cycle takes about two minutes to complete, but the ``homing()`` method
44
- returns almost immediately. Therefore, to check if the homing is finished, use
45
- the is_homing_done() method.
46
-
47
- Returns:
48
- 0 on success.
49
- Raises:
50
- HexapodError: when there is a time out or when there is a communication error with
51
- the hexapod.
52
- """
53
- raise NotImplementedError
54
-
55
- @dynamic_interface
56
- def set_virtual_homing(self, tx, ty, tz, rx, ry, rz):
57
- """Starts the virtual homing cycle on the hexapod.
58
-
59
- This command uses the position given in parameters to initialize the hexapod position.
60
- No movements of the hexapod are performed during this homing cycle. Please note that the
61
- position specified in parameters must match the absolute position of the Object coordinate
62
- system in the User coordinate system (see description in the manual chapter 2 on coordinates
63
- systems). This position correspond to the answer of the command `get_user_positions()`.
64
- During this operation, it is important to have the same hexapod position as those defined
65
- during the record of the position. Otherwise, the system initialization will be incorrect.
66
-
67
- Args:
68
- tx (float): position on the X-axis [mm]
69
- ty (float): position on the Y-axis [mm]
70
- tz (float): position on the Z-axis [mm]
71
- rx (float): rotation around the X-axis [deg]
72
- ry (float): rotation around the Y-axis [deg]
73
- rz (float): rotation around the Z-axis [deg]
74
-
75
- Returns:
76
- return_code: 0 on success, -1 when ignored
77
-
78
- Raises:
79
- HexapodError: when the arguments do not match up, or when there is a time out or when
80
- there is a
81
- socket communication error.
82
-
83
- """
84
- return NotImplementedError
85
-
86
- @dynamic_interface
87
- def stop(self):
88
- """Stop the current motion. This command can be send during a motion of the Hexapod.
89
-
90
- Returns:
91
- 0 on success.
92
- Raises:
93
- HexapodError: when there is a time out or when there is a communication error with
94
- the hexapod.
95
- """
96
- raise NotImplementedError
97
-
98
- @dynamic_interface
99
- def clear_error(self):
100
- """Clear all errors in the controller software.
101
-
102
- Returns:
103
- 0 on success.
104
- Raises:
105
- HexapodError: when there is Time-Out or when there is a communication error with the
106
- hexapod.
107
- """
108
- raise NotImplementedError
109
-
110
- @dynamic_interface
111
- def activate_control_loop(self):
112
- """Activates the control loop on motors.
113
-
114
- Returns:
115
- 0 on success, -1 when ignored, -2 on error.
116
- Raises:
117
- HexapodError: when there is a time out or when there is a communication error with
118
- the hexapod
119
- hardware controller.
120
- """
121
- raise NotImplementedError
122
-
123
- @dynamic_interface
124
- def deactivate_control_loop(self):
125
- """Disables the control loop on the servo motors.
126
-
127
- Returns:
128
- 0 on success.
129
- Raises:
130
- HexapodError: when there is a time out or when there is a communication error with
131
- the hexapod.
132
- """
133
- raise NotImplementedError
134
-
135
- @dynamic_interface
136
- def jog(self, axis: int, inc: float) -> int:
137
- """Perform a JOG-type movement on the specified actuator.
138
-
139
- .. note::
140
- This is a maintenance feature.
141
-
142
- Args:
143
- axis (int): number of the actuator (1 to 6)
144
- inc (float): increment to achieve in mm
145
- Returns:
146
- 0 on success, -1 if command was ignored due to non-compliance.
147
- Raises:
148
- HexapodError: when there is a time out or when there is a communication error with
149
- the hexapod.
150
- """
151
- raise NotImplementedError
152
-
153
- @dynamic_interface
154
- def get_debug_info(self):
155
- """
156
- Request debug information from the Hexapod Controller.
157
-
158
- The method returns four values that represent the following status:
159
-
160
- 1. ``Homing``: state of the homing
161
- 2. ``PosRef``: state of the Position Reference command
162
- 3. ``KinError``: error in kinematic calculation
163
- 4. ``Panel``: Panel state
164
-
165
- The Homing can take the following values:
166
-
167
- ===== ==================
168
- Value Meaning
169
- ===== ==================
170
- 0 Undefined
171
- 1 Homing in progress
172
- 2 Homing done
173
- 3 Error
174
- ===== ==================
175
-
176
- The PosRef can take the following values:
177
-
178
- ======= =====================
179
- Value Meaning
180
- ======= =====================
181
- 0 Undefined
182
- 1 Abort input error
183
- 2 Movement in progress
184
- 3 Position reached
185
- 4 Error
186
- ======= =====================
187
-
188
- The KinError can take the following values:
189
-
190
- ======= ===============================================
191
- Value Meaning
192
- ======= ===============================================
193
- 0 none
194
- 1 Homing not done
195
- 2 Inverse kinematic model (MGI) – workspace
196
- 3 Inverse kinematic model (MGI) – joint angle
197
- 4 Forward kinematic model (MGD) – workspace
198
- 5 Forward kinematic model (MGD) – max iteration
199
- 6 Position calculation (PLCC) – workspace
200
- 7 Position calculation (PLCC) – max iteration.
201
- ======= ===============================================
202
-
203
- The Panel status can take the following values:
204
-
205
- ====== ===============
206
- Index Command
207
- ====== ===============
208
- -2 Command error
209
- -1 Ignored / Command not allowed
210
- **0** **None**
211
- 1 Homing
212
- 2 Stop
213
- 3 Control ON
214
- 4 Control OFF
215
- 10 Valid POS
216
- 11 Move
217
- 12 Sequence
218
- 13 Specific POS
219
- 15 Clear Error
220
- **Family “Set config”**
221
- ------------------------
222
- 21 Config CS
223
- 22 Config Limits_mTn
224
- 23 Config Limits_uTo
225
- 24 Config Limits_Enabled
226
- 25 Config Speed
227
- 26 Config Current
228
- 27 Config Backlash
229
- **Family “Get config”**
230
- ------------------------
231
- 31 Config CS
232
- 32 Config Limits_mTn
233
- 33 Config Limits_uTo
234
- 34 Config Limits_Enabled
235
- 35 Config Speed
236
- 36 Config Current
237
- 37 Config Backlash
238
- **Family “Maintenance”**
239
- ------------------------
240
- 41 Jog
241
- 50 Config Save
242
- 51 Config Default
243
- 52 Config Saved?
244
- 55 Version
245
- ====== ===============
246
-
247
- """
248
- raise NotImplementedError
249
-
250
- @dynamic_interface
251
- def configure_coordinates_systems(
252
- self, tx_u, ty_u, tz_u, rx_u, ry_u, rz_u, tx_o, ty_o, tz_o, rx_o, ry_o, rz_o
253
- ):
254
- """
255
- Change the definition of the User Coordinate System and the Object Coordinate System.
256
-
257
- The parameters tx_u, ty_u, tz_u, rx_u, ry_u, rz_u are used to define the user coordinate
258
- system
259
- relative to the Machine Coordinate System and the parameters tx_o, ty_o, tz_o, rx_o,
260
- ry_o, rz_o
261
- are used to define the Object Coordinate System relative to the Platform Coordinate System.
262
-
263
- Args:
264
- tx_u (float): translation parameter that define the user coordinate system relative
265
- to the
266
- machine coordinate system [in mm]
267
- ty_u (float): translation parameter that define the user coordinate system relative
268
- to the
269
- machine coordinate system [in mm]
270
- tz_u (float): translation parameter that define the user coordinate system relative
271
- to the
272
- machine coordinate system [in mm]
273
-
274
- rx_u (float): rotation parameter that define the user coordinate system relative to
275
- the machine
276
- coordinate system [in deg]
277
- ry_u (float): rotation parameter that define the user coordinate system relative to
278
- the machine
279
- coordinate system [in deg]
280
- rz_u (float): rotation parameter that define the user coordinate system relative to
281
- the machine
282
- coordinate system [in deg]
283
-
284
- tx_o (float): translation parameter that define the object coordinate system relative
285
- to the
286
- platform coordinate system [in mm]
287
- ty_o (float): translation parameter that define the object coordinate system relative
288
- to the
289
- platform coordinate system [in mm]
290
- tz_o (float): translation parameter that define the object coordinate system relative
291
- to the
292
- platform coordinate system [in mm]
293
-
294
- rx_o (float): rotation parameter that define the object coordinate system relative to
295
- the
296
- platform coordinate system [in deg]
297
- ry_o (float): rotation parameter that define the object coordinate system relative to
298
- the
299
- platform coordinate system [in deg]
300
- rz_o (float): rotation parameter that define the object coordinate system relative to
301
- the
302
- platform coordinate system [in deg]
303
-
304
- Returns:
305
- 0 on success and -1 when the configuration is ignored, e.g. when password protection
306
- is enabled.
307
- """
308
- raise NotImplementedError
309
-
310
- @dynamic_interface
311
- def get_coordinates_systems(self):
312
- """Retrieve the definition of the User Coordinate System and the Object Coordinate System.
313
-
314
- Returns:
315
- tx_u, ty_u, tz_u, rx_u, ry_u, rz_u, tx_o, ty_o, tz_o, rx_o, ry_o, rz_o where the
316
- translation \
317
- parameters are in [mm] and the rotation parameters are in [deg].
318
- Raises:
319
- HexapodError: when an error occurred while trying to retrieve the information.
320
- """
321
- raise NotImplementedError
322
-
323
- @dynamic_interface
324
- def get_actuator_length(self):
325
- """Retrieve the current length of the hexapod actuators.
326
-
327
- Returns:
328
- array: an array of six float values for actuator length L1 to L6 in [mm], and \
329
- None: when an Exception was raised and logs the error message.
330
- """
331
- raise NotImplementedError
332
-
333
- @dynamic_interface
334
- def move_absolute(self, tx, ty, tz, rx, ry, rz):
335
- """Move/define the Object Coordinate System position and orientation expressed
336
- in the invariant user coordinate system.
337
-
338
- The rotation centre coincides with the Object Coordinates System origin and
339
- the movements are controlled with translation components at first (Tx, Ty, tZ)
340
- and then the rotation components (Rx, Ry, Rz).
341
-
342
- Args:
343
- tx (float): position on the X-axis [mm]
344
- ty (float): position on the Y-axis [mm]
345
- tz (float): position on the Z-axis [mm]
346
- rx (float): rotation around the X-axis [deg]
347
- ry (float): rotation around the Y-axis [deg]
348
- rz (float): rotation around the Z-axis [deg]
349
-
350
- Returns:
351
- return_code: 0 on success, -1 when ignored, -2 on error
352
-
353
- Raises:
354
- HexapodError: when the arguments do not match up, or when there is a time out or when
355
- there is a
356
- socket communication error.
357
-
358
- .. note::
359
- When the command was not successful, this method will query the
360
- POSVALID? using the checkAbsolutePosition() and print a summary
361
- of the error messages to the log file.
362
-
363
- .. todo::
364
- do we want to check if the movement is valid before actually performing
365
- the movement?
366
-
367
- """
368
- raise NotImplementedError
369
-
370
- @dynamic_interface
371
- def move_relative_object(self, tx, ty, tz, rx, ry, rz):
372
- """Move the object relative to its current object position and orientation.
373
-
374
- The relative movement is expressed in the object coordinate system.
375
-
376
- Args:
377
- tx (float): position on the X-axis [mm]
378
- ty (float): position on the Y-axis [mm]
379
- tz (float): position on the Z-axis [mm]
380
- rx (float): rotation around the X-axis [deg]
381
- ry (float): rotation around the Y-axis [deg]
382
- rz (float): rotation around the Z-axis [deg]
383
-
384
- Returns:
385
- 0 on success, -1 when ignored, -2 on error.
386
-
387
- Raises:
388
- HexapodError: when the arguments do not match up, or when there is a time out or when
389
- there is a
390
- socket communication error.
391
-
392
- .. todo:: do we want to check if the movement is valid before actually performing
393
- the movement?
394
-
395
- """
396
- raise NotImplementedError
397
-
398
- @dynamic_interface
399
- def move_relative_user(self, tx, ty, tz, rx, ry, rz):
400
- """Move the object relative to its current object position and orientation.
401
-
402
- The relative movement is expressed in the (invariant) user coordinate system.
403
-
404
- Args:
405
- tx (float): position on the X-axis [mm]
406
- ty (float): position on the Y-axis [mm]
407
- tz (float): position on the Z-axis [mm]
408
- rx (float): rotation around the X-axis [deg]
409
- ry (float): rotation around the Y-axis [deg]
410
- rz (float): rotation around the Z-axis [deg]
411
-
412
- Returns:
413
- 0 on success, -1 when ignored, -2 on error.
414
-
415
- Raises:
416
- HexapodError: when the arguments do not match up, or when there is a time out or when
417
- there is a
418
- socket communication error.
419
-
420
- .. todo:: do we want to check if the movement is valid before actually performing
421
- the movement?
422
-
423
- """
424
- raise NotImplementedError
425
-
426
- @dynamic_interface
427
- def check_absolute_movement(self, tx, ty, tz, rx, ry, rz):
428
- """Check if the requested object movement is valid.
429
-
430
- The absolute movement is expressed in the user coordinate system.
431
-
432
- Args:
433
- tx (float): position on the X-axis [mm]
434
- ty (float): position on the Y-axis [mm]
435
- tz (float): position on the Z-axis [mm]
436
- rx (float): rotation around the X-axis [deg]
437
- ry (float): rotation around the Y-axis [deg]
438
- rz (float): rotation around the Z-axis [deg]
439
-
440
- Returns:
441
- tuple: where the first element is an integer that represents the
442
- bitfield encoding the errors. The second element is a dictionary
443
- with the bit numbers that were (on) and the corresponding error
444
- description.
445
-
446
- .. todo:: either provide a more user friendly return value or a method/function
447
- to process the information into a human readable form. Also update
448
- the documentation of this method with more information about the
449
- bitfields etc.
450
- """
451
- raise NotImplementedError
452
-
453
- @dynamic_interface
454
- def check_relative_object_movement(self, tx, ty, tz, rx, ry, rz):
455
- """Check if the requested object movement is valid.
456
-
457
- The relative motion is expressed in the object coordinate system.
458
-
459
- Args:
460
- tx (float): position on the X-axis [mm]
461
- ty (float): position on the Y-axis [mm]
462
- tz (float): position on the Z-axis [mm]
463
- rx (float): rotation around the X-axis [deg]
464
- ry (float): rotation around the Y-axis [deg]
465
- rz (float): rotation around the Z-axis [deg]
466
-
467
- Returns:
468
- tuple: where the first element is an integer that represents the
469
- bitfield encoding the errors. The second element is a dictionary
470
- with the bit numbers that were (on) and the corresponding error
471
- description.
472
-
473
- .. todo:: either provide a more user friendly return value or a method/function
474
- to process the information into a human readable form. Also update
475
- the documentation of this method with more information about the
476
- bitfields etc.
477
- """
478
- raise NotImplementedError
479
-
480
- @dynamic_interface
481
- def check_relative_user_movement(self, tx, ty, tz, rx, ry, rz):
482
- """Check if the requested object movement is valid.
483
-
484
- The relative motion is expressed in the user coordinate system.
485
-
486
- Args:
487
- tx (float): position on the X-axis [mm]
488
- ty (float): position on the Y-axis [mm]
489
- tz (float): position on the Z-axis [mm]
490
- rx (float): rotation around the X-axis [deg]
491
- ry (float): rotation around the Y-axis [deg]
492
- rz (float): rotation around the Z-axis [deg]
493
-
494
- Returns:
495
- tuple: where the first element is an integer that represents the
496
- bitfield encoding the errors. The second element is a dictionary
497
- with the bit numbers that were (on) and the corresponding error
498
- description.
499
-
500
- .. todo:: either provide a more user friendly return value or a method/function
501
- to process the information into a human readable form. Also update
502
- the documentation of this method with more information about the
503
- bitfields etc.
504
- """
505
- raise NotImplementedError
506
-
507
- @dynamic_interface
508
- def get_user_positions(self):
509
- """Retreive the current position of the hexapod.
510
-
511
- The returned position corresponds to the position of the Object Coordinate System
512
- in the User Coordinate System.
513
-
514
- Returns:
515
- array: an array of six float values for Tx, Ty, Tz, Rx, Ry, Rz.
516
- None: when an Exception was raised and logs the error message.
517
-
518
- .. note:: This is equivalent to the POSUSER? command.
519
- """
520
- raise NotImplementedError
521
-
522
- @dynamic_interface
523
- def get_machine_positions(self):
524
- """Retreive the current position of the hexapod.
525
-
526
- The returned position corresponds to the position of the Platform Coordinate System
527
- in the Machine Coordinate System.
528
-
529
- Returns:
530
- array: an array of six float values for Tx, Ty, Tz, Rx, Ry, Rz.
531
- None: when a PMACError was raised and logs the error message.
532
-
533
- .. note:: This is equivalent to the POSMACH? command.
534
- """
535
- raise NotImplementedError
536
-
537
- @dynamic_interface
538
- def set_speed(self, vt, vr):
539
- """Set the speed of the hexapod movements.
540
-
541
- Args:
542
- vt (float): The translation speed, expressed in mm per second [mm/s].
543
- vr (float): The angular speed, expressed in deg per second [deg/s].
544
-
545
- The arguments `vt` and `vr` are automatically limited by the controller
546
- between the minimum and maximum allowed speeds for the hexapod.
547
- See the `getSpeed()` method to know the limits.
548
-
549
- Returns:
550
- 0 on success and -1 when the configuration is ignored, e.g. when password protection
551
- is enabled.
552
- """
553
- raise NotImplementedError
554
-
555
- @dynamic_interface
556
- def get_speed(self):
557
- """Retrieve the configuration of the movement speed.
558
-
559
- Returns:
560
- vt, vr, vt_min, vr_min, vt_max, vr_max
561
-
562
- Where:
563
- * ``vt`` is the translation speed of the hexapod in mm per second [mm/s]
564
- * ``vr`` is the angular speed of the hexapod in deg per second [deg/s]
565
- * ``vt_min``, ``vt_max`` are the limits for the translation speed [mm/s]
566
- * ``vr_min``, ``vr_max`` are the limits for the angular speed [mm/s]
567
-
568
- """
569
- raise NotImplementedError
570
-
571
- @dynamic_interface
572
- def get_general_state(self):
573
- """Retrieve general state information of the hexapod.
574
-
575
- Returns:
576
- tuple: where the first element is an integer where the bits represent each state, and
577
- the second element is an array of True/False flags for each state described in
578
- Hexapod
579
- Controller API, section 4.5.6.
580
-
581
- None: when an Exception was raised and logs the error message.
582
-
583
- .. note:: This is equivalent to the STATE#HEXA? Command.
584
- """
585
- raise NotImplementedError
586
-
587
- @dynamic_interface
588
- def get_actuator_state(self):
589
- """Retreive general state information of the actuators.
590
-
591
- For each of the six actuators, an integer value is returned that should be interpreted as a
592
- bit field containing status bits for that actuator.
593
-
594
- ====== ========================
595
- Bit Function
596
- ====== ========================
597
- 0 In position
598
- 1 Control loop on servo motors active
599
- 2 Homing done
600
- 3 Input "Home Switch"
601
- 4 Input "Positive limit switch"
602
- 5 Input "Negative limit switch"
603
- 6 Brake control output
604
- 7 Following error (warning)
605
- 8 Following error (Fatal)
606
- 9 Actuator out of bounds error
607
- 10 Amplifier error
608
- 11 Encoder error
609
- 12 Phasing error (brushless engine only)
610
- 13-23 Reserved
611
- ====== ========================
612
-
613
- Returns:
614
- array: an array of six (6) dictionaries with True/False flags for each actuator state
615
- as described in
616
- Hexapod Controller API, section 4.5.5.
617
- None: when an Exception was raised and logs the error message.
618
-
619
- .. note:: This is equivalent to the STATE#ACTUATOR? Command.
620
- """
621
- raise NotImplementedError
622
-
623
- @dynamic_interface
624
- def goto_specific_position(self, pos):
625
- """Ask to go to a specific position.
626
-
627
- * pos=0 Zero position (jog & maintenance only!)
628
- * pos=1 Zero position
629
- * pos=2 Retracted position
630
-
631
- Returns:
632
- 0 on success, -1 when ignored.
633
-
634
- Raises:
635
- HexapodError: when there is Time-Out or when there is a communication error with the
636
- hexapod controller.
637
- """
638
- raise NotImplementedError
639
-
640
- @dynamic_interface
641
- def goto_retracted_position(self):
642
- """Ask the hexapod to go to the retracted position.
643
-
644
- Returns:
645
- 0 on success, -1 when ignored.
646
-
647
- Raises:
648
- HexapodError: when there is Time-Out or when there is a socket communication error.
649
- """
650
- raise NotImplementedError
651
-
652
- @dynamic_interface
653
- def goto_zero_position(self):
654
- """Ask the hexapod to go to the zero position.
655
-
656
- Returns:
657
- 0 on success, -1 when ignored.
658
-
659
- Raises:
660
- HexapodError: when there is Time-Out or when there is a socket communication error.
661
- """
662
- raise NotImplementedError
663
-
664
- @dynamic_interface
665
- def is_homing_done(self):
666
- """
667
- Check if Homing is done. This method checks the ``Q26`` variable.
668
- When this variable indicates 'Homing is done' it means the command has properly been
669
- executed,
670
- but it doesn't mean the Hexapod is in position. The hexapod might still be moving to its
671
- zero position.
672
-
673
- Returns:
674
- True when the homing is done, False otherwise.
675
- """
676
- raise NotImplementedError
677
-
678
- @dynamic_interface
679
- def is_in_position(self):
680
- """
681
- Checks if the actuators are in position.
682
-
683
- This method queries the Q36 variable and examines the third bit which is the 'Is
684
- Position' bit.
685
- This method does **not** query the actuator state variables Q30 till Q36.
686
-
687
- Returns:
688
- True when in position, False otherwise.
689
- """
690
- raise NotImplementedError
691
-
692
- @dynamic_interface
693
- def perform_maintenance(self, axis):
694
- """Perform a maintenance cycle which consists to travel the full range
695
- on one axis corresponding to the Hexapod machine limits. The movement is
696
- also in machine coordinate system.
697
-
698
- The ``axis`` argument can take the following values:
699
-
700
- * 1: movement on the X-axis
701
- * 2: movement on the Y-axis
702
- * 3: movement on the Z-axis
703
- * 4: movement around the X-axis
704
- * 5: movement around the Y-axis
705
- * 6: movement around the Z-axis
706
- * 10: all previous cycles chained together
707
-
708
- Args:
709
- axis (int): on which axis the full range movement is executed
710
- Returns:
711
- 0 on success, -1 when ignored for non-compliance.
712
- Raises:
713
- HexapodError: when there is Time-Out or when there is a socket communication error.
714
- """
715
- raise NotImplementedError
716
-
717
- def log_positions(self):
718
- """
719
- Log the current position of the hexapod (level=INFO). The positions correspond to
720
-
721
- * the position of the Object Coordinate System in the User Coordinate System, and
722
- * the position of the Platform Coordinate System in the Machine Coordinate System.
723
-
724
- """
725
-
726
- pos = self.get_user_positions()
727
- logger.info(
728
- f"Object [in User] : "
729
- f"{pos[0]:2.5f}, {pos[1]:2.5f}, {pos[2]:2.5f}, {pos[3]:2.5f}, {pos[4]:2.5f}, "
730
- f"{pos[5]:2.5f}"
731
- )
732
-
733
- pos = self.get_machine_positions()
734
- logger.info(
735
- f"Platform [in Machine]: "
736
- f"{pos[0]:2.5f}, {pos[1]:2.5f}, {pos[2]:2.5f}, {pos[3]:2.5f}, {pos[4]:2.5f}, "
737
- f"{pos[5]:2.5f}"
738
- )
739
-
740
-
741
- class AlphaPlusControllerInterface(AlphaControllerInterface):
742
-
743
- @dynamic_interface
744
- def get_limits_value(self, lim):
745
- """Three different and independent operational workspace limits are defined on the controller:
746
- * Factory limits: are expressed in machine coordinate system limits. Those parameters cannot be modified.
747
- * Machine coordinate system limits: they are expressed in the Machine coordinate system. It can be used to
748
- secure the hexapod (and/or object) from its environment.
749
- * User coordinate system limits: they are expressed in the User coordinate system. It can be used to limits
750
- the movements of the object mounted on hexapod.
751
-
752
- Remark: operational workspace limits must be understood as limits in terms of amplitude of movement. Those
753
- limits are defined for each operational axis with a negative and positive value and are used in the validation
754
- process. Position on each operational axis must be within those two values.
755
-
756
- Args:
757
- lim (int):
758
- 0 = factory (GET only),
759
- 1 = machine cs limit,
760
- 2 = user cs limit
761
-
762
- """
763
- raise NotImplementedError
764
-
765
- @dynamic_interface
766
- def get_limits_state(self):
767
- """ Return workspace limits enable state
768
-
769
- """
770
- raise NotImplementedError
771
-
772
- @dynamic_interface
773
- def get_temperature(self):
774
- """ Return the 6xPT100 temperature sensor's value in C
775
-
776
- """
777
- raise NotImplementedError
778
-
779
- @dynamic_interface
780
- def machine_limit_enable(self, state):
781
- """Enable or disable the machine workspace limit of the hexapod.
782
-
783
- Remark: the factory machine coordinate system limit is always enabled to ensure the safety of the hexapod. It
784
- cannot be disabled.
785
-
786
- state(int):
787
- 0 = disabled
788
- 1 = enabled
789
-
790
- """
791
-
792
- raise NotImplementedError
793
-
794
- @dynamic_interface
795
- def machine_limit_set(self, *par):
796
- """Sets the machine workspace limits of the hexapod. Will raise error if not all the parameters are set (see
797
- Args definition)
798
-
799
- Remark: operational workspace limits must be understood as limits in terms of amplitude of movement. Those limits
800
- are defined for each operational axis with a negative and positive value and are used in the validation process.
801
- Position on each operational axis must be within those two values.
802
-
803
- Args:
804
- ntx(double): negative position limit in X in mm
805
- nty(double): negative position limit in Y in mm
806
- ntz(double): negative position limit in Z in mm
807
- nrx(double): negative position limit around the axis X in deg
808
- nry(double): negative position limit around the axis Y in deg
809
- nrz(double): negative position limit around the axis Y in deg
810
-
811
- ptx(double): positive position limit in X in mm
812
- pty(double): positive position limit in Y in mm
813
- ptz(double): positive position limit in Z in mm
814
- prx(double): positive position limit around the axis X in deg
815
- pry(double): positive position limit around the axis Y in deg
816
- prz(double): positive position limit around the axis Y in deg
817
-
818
- """
819
-
820
- raise NotImplementedError
821
-
822
- @dynamic_interface
823
- def user_limit_enable(self, state):
824
- """Enable or disable the user workspace limit of the hexapod.
825
-
826
- Remark: the factory machine coordinate system limit is always enabled to ensure the safety of the hexapod. It
827
- cannot be disabled.
828
-
829
- state(int):
830
- 0 = disabled
831
- 1 = enabled
832
-
833
- """
834
-
835
- raise NotImplementedError
836
-
837
- @dynamic_interface
838
- def user_limit_set(self, *par):
839
- """Sets the user workspace limits of the hexapod. Will raise error if not all the parameters are set (see
840
- Args definition)
841
-
842
- Remark: operational workspace limits must be understood as limits in terms of amplitude of movement. Those limits
843
- are defined for each operational axis with a negative and positive value and are used in the validation process.
844
- Position on each operational axis must be within those two values.
845
-
846
- Args:
847
- ntx(double): negative position limit in X in mm
848
- nty(double): negative position limit in Y in mm
849
- ntz(double): negative position limit in Z in mm
850
- nrx(double): negative position limit around the axis X in deg
851
- nry(double): negative position limit around the axis Y in deg
852
- nrz(double): negative position limit around the axis Y in deg
853
-
854
- ptx(double): positive position limit in X in mm
855
- pty(double): positive position limit in Y in mm
856
- ptz(double): positive position limit in Z in mm
857
- prx(double): positive position limit around the axis X in deg
858
- pry(double): positive position limit around the axis Y in deg
859
- prz(double): positive position limit around the axis Y in deg
860
-
861
- """
862
-
863
- raise NotImplementedError
864
-
865
- @dynamic_interface
866
- def set_default(self):
867
- """
868
- Restores the default configuration parameters. The command can be used to restore factory default parameters.
869
- The restored configuration is not automatically saved. refer to the command CFG_SAVE to save the parameters in
870
- order to keep them after a controller power off. The calculation of the hexapod position is suspended during the
871
- command execution.
872
- """
873
-
874
- raise NotImplementedError