Compare commits

...

896 Commits
mirror ... wip

Author SHA1 Message Date
421eb67b93 Merge branch 'glab_merge_request' into 'wip'
frappy_psi.sensirion: fix a typo

See merge request samenv/frappy!1
2025-03-28 16:47:39 +01:00
3048b8cb7d frappy_psi.sensirion: fix a typo
Change-Id: I259151b7a1b908c8289ecb88d2d3d4e6d9e45c12
2025-03-28 16:30:10 +01:00
0ef484e082 frappy_psi/adq_mr (ultrasound): exit on reboot error message
otherwise the error message is confusing
+ remove CR from line endings in adq_mr.py

Change-Id: Ia465a26803a92677383969ff620ef35e58f1a5ec
2025-03-28 14:27:06 +01:00
8560384529 ls370res: do not raise in read_rdgrng error when channel is disabled
Change-Id: I565e5cd74cf7f12bfd5eea9e8867117154461017
2025-03-28 14:27:06 +01:00
l_samenv
16d419c0f3 ah2700: make loss its own module 2025-03-28 13:15:24 +01:00
Ultrasound PC
8c548da2e0 bin/us-plot: fix usage message 2025-03-26 17:02:35 +01:00
Ultrasound PC
d9f340dce6 ultrasound: change control roi0 to a Readable (2)
+ remove cfg/PEUS.py
+ fix equipment_id of PEUS
+ add header to frappy_psi.iqplot
2025-03-26 16:45:53 +01:00
Ultrasound PC
1325c8924d ultrasound: change control roi0 to a Readable
+ remove cfg/PEUS.py
+ fix equipment_id of PEUS
2025-03-26 16:37:15 +01:00
Ultrasound PC
f8e3bd9ad2 improve ultrasound plot clients
- make plot window not to raise to the front on replot
- chmod +x
2025-03-26 16:18:54 +01:00
6f547f0781 ultrasound: reworked after tests
- new classes in frappy_psi/ultrasound.py and frappy_psi/adq.mr.py
- add signal plottter
- move clients to bin/ directory

Change-Id: I8db8e5ebc082c346278f09e0e54504e070655f14
2025-03-26 15:31:46 +01:00
l_samenv
322cd39e0a gas10k / mercury.HeaterUpdate: switch off loop on startup
the class frappy_psi.mercury.HeaterUpdate is used for the output
of a soft pid loop. set target to 0 to switch off the loop
on startup.
2025-03-26 10:51:16 +01:00
l_samenv
41b51b35fd further work on needle valve, pump and lakeshore 2025-03-19 16:38:21 +01:00
19571ab83d change again how to exit logdif.py
Change-Id: I442ca8c2ee7ca25ff98a0e84df2688a55a0dcec9
2025-03-19 16:34:59 +01:00
b35c97f311 stop poller threads on shutdown: cosmetics
cosmetics after gerrit

Change-Id: I4d982f83e3fe5a8c8c821ac718e51b9a58de2a62
2025-03-19 15:33:25 +01:00
5d175b89ca frappy_psi.ultrasound: add input_delay and other improvments
Change-Id: I6cb5690d82d96d6775fcb649fc633c4039932463
2025-03-19 15:29:17 +01:00
f8c52af3ac frappy_psi.ultrasound: after rework (still wip)
Change-Id: I200cbeca2dd0f030a01a78ba4d38c342c3c8c8e3
2025-03-17 09:37:13 +01:00
bf9c946b1d frappy-scan: resolve ip numbers to names
Change-Id: I07bf7c274aeb52f2aaa58e8aa2f3bcb2788556ee
2025-03-17 09:36:50 +01:00
09e596f847 stop poller threads on shutdown
make sure module methods are not called after shutdownModule

+ fix: when mod.enablePoll is False, pollInfo is None
  therefore we have to check before access

Change-Id: I83b28607b25996376939175be8abf0c5b27bcac1
2025-03-17 09:35:57 +01:00
l_samenv
7e2ccd214e frappy_psi.drums: changes after test
when trying with Marcel, we needed these fixes
2025-03-14 09:05:09 +01:00
907a52ccdb config: Mod() should return config dict
this helps for coded configuration

Change-Id: I07bdf72f77082f31ee86192faec63df706dcbf56
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35803
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-03-07 10:19:46 +01:00
51dba895a5 config: validate value and default of parameters
The Parameter Properties 'value', 'default' and 'constant'
have ValueType, so they are not checked in the setProperty call.
We have to do this explicitly in Module._add_accessible.

Change-Id: I1e35adf2fe539411b4aebacd813adb07497de95b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35797
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-03-07 10:19:01 +01:00
Georg Brandl
d86718b81e remove wrong <weight> from fonts on Qt6
Change-Id: Ib94b2ed74598b9f54c2361e61bfa940e60bd7c62
2025-03-07 10:18:51 +01:00
Georg Brandl
42a6bfb5d2 debian: update compat
Change-Id: I172dff4e0239ce90fe7b1c19fc800ba98f116270
2025-03-07 10:18:42 +01:00
895f66f713 core: simplify test for methods names
The test for method names 'read_<param>' and 'write_<param>'
without a defined parameter is simplified. We do not check
anymore method names from base classes. Base classes
inheriting from HasAccessible are checked anyway at the
place they are defined.

+ add a test for it
+ move some tests to a new file test_all_modules.py, as
  test_modules.py is getting too long
+ fix missing doc string (frappy.simulation.SimDrivable.stop)

Change-Id: Id8a9afe5c977ae3b1371bd40c6da52be2fc79eb9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35503
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-03-07 10:18:35 +01:00
3663c62b46 core: alternative approach for optional accessibles
This is meant to replace change 33375.
Optional commands and parameters may be declared with the argument
optional=True. In principle, optional commands are not really needed
to be declared, but doing so is nice for documentation reasons
and for inherited accessible properties.

Optional parameters and commands can not be used and are not
exported als long as they are not overridden in subclasses.

- add a test for this
+ fix an issue with checking for methods like read_<param> without
  <param> being a parameter

Change-Id: Ide5021127a02778e7f2f7162555ec8826f1471cb
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35495
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2025-03-07 10:18:27 +01:00
l_samenv
8c2588a5ed merged changes for lakeshore and ccu4 2025-03-07 07:37:11 +01:00
l_samenv
95dc8b186e improve error handling 2025-03-06 17:22:21 +01:00
l_samenv
265dbb1a57 gui: add org- and app-name to QtApplication
for a better path name of stored configuration
2025-03-06 16:57:55 +01:00
73e9c8915b logdif.py: leave on every input except bare return
Change-Id: I3d53c7b45fb9ef09a61be5af13a2cdc4d32d5c7d
2025-02-13 09:40:27 +01:00
2e99e45aea WIP new version of ultrasound
Change-Id: Iadb83396a64e277f6f0a37f7a96d92105648c4fe
2025-01-28 09:40:36 +01:00
b7bc81710d frappy_demo.test: add parameter for testing error messages
Change-Id: Ifbf9d6829be373417d3bf1ff398d2aee283d8c9a
2025-01-17 15:01:11 +01:00
eee63ee3df config: do not override equipment_id with name
In the previous code, the equipment_id was overridden by the
server name when the interface argument was given over
the commandline. This was leftover from the previous config
file format, where the config files not neccessarly needed
an equipment_id.

Change-Id: I2fc248372a7d2f61cc0690804268d6d066a0a9fa
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35391
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-01-17 15:00:20 +01:00
fd43687465 equipment_id for merged configs and routed nodes
Add a new custom module property 'original_id' indicating
the equipment_id the modules originally belongs to.
This property is only given, when distinct from the equipment_id
of the SEC node.
It happens when multiple config files are given, for all modules
but the ones given in the first file, and for routed modules,
when  multiple nodes are routed or own modules are given.

+ fix an issue in router: additional modules were ignore in case
of a single node.

+ small cosmetic changes in config.py reducing IDE complains

Change-Id: If846c47a06158629cef807d22b91f69e4f416563
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35396
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2025-01-17 15:00:20 +01:00
a25a368491 take over changes from ultrasound PC
Change-Id: I1eae717a5963e618d87ddf52db991d428a046d24
2025-01-09 11:23:12 +01:00
4397d8db1a WIP: old oxford devices (ILM, IPS, IGH...)
Change-Id: I4ca0dc6149d257818d300db4d886a1e33e8210be
2025-01-09 10:09:33 +01:00
e60ac5e655 move start_ramp_to_target to SimpleMagfiield
Change-Id: Iab3fe8738c560bf5ac2f11a4a34428a8ffd6a7c2
2024-12-20 15:49:33 +01:00
0b5b40cfba frappy_psi.ccu4: some smaller updates
Change-Id: I128ac57aad951fd8ad3bdf663c69c85644063645
2024-12-18 15:40:05 +01:00
2a617fbaf0 make UPD listener work when 'tcp://' is omitted on interface
'tcp://' may be omitted on interfaces
add missing 'tcp://' earlier in code, so we do not need to check
for missing 'tcp://' again.

Change-Id: Ie9b4dbd168aebdb6edfe71dbd2cfc25e9229fe67
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35321
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-12-18 09:29:58 +01:00
72d09ea73a fix bug in change 35001 (better error message)
fix bug in error message

Change-Id: I8151d20f840818fc26d42348f73e740cdb20e03d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35287
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-12-10 16:30:19 +01:00
1ae19d03b3 frappy_psi.sea: fix case when bool is implemented as text
introduce SeaBool for this

Change-Id: I9c6b6ee7d33f11b173d612efc044fce8a563f626
2024-12-10 16:29:07 +01:00
41cb107f50 an error on a write must not send an error update
Change-Id: I07a991bcf26e87121160a2e604f8842eba23ebaf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35281
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-12-10 10:28:25 +01:00
8b0c4c78a9 pylint: increase max number of positional arguments
Change-Id: Id88270b3c3c1efb56f47def733c1e9c745f1ab18
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35282
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-12-10 10:28:25 +01:00
7ac10d2260 better message when a parameter is overridden by an invalid value
happens e.g. then writing status = StatusType(...) instead of
status = Parameter(datatype=StatusType(...)) on the class level

+ improve doc strings

Change-Id: I05a0b0b0da4438a40b525da40018bb5b09fd5303
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35001
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-12-10 10:28:25 +01:00
6cbb3a094b frappy_psi.pulse: fix fatal errors
even when a module is work in progress, it should not raise
an error on import

Change-Id: I2f91301ba2b0c574ea344c36a74da0f893aa326d
2024-12-06 11:58:45 +01:00
l_samenv
405d316568 adapt temperature and temperature_regulation importance
- temperature_regulation on VTI should have higher importance (27)
  than temperature on sample stick, when Drivable (25)
2024-12-03 15:32:57 +01:00
l_samenv
ac92a6ca3d sea cfg: set visibility of calibration points to expert 2024-12-03 15:23:01 +01:00
l_samenv
a9e3489325 ma7: use new config type with sea_path and frappy.sea.LscDrivable 2024-12-03 15:19:45 +01:00
654a472a7e frappy_psi.sea: more improvements
- add sea_path property
- add LscDrivable (config of these modules is easier to understand)

Change-Id: I616dc94de6e784f6d8cfcf080d9a8408cbf73d93
2024-12-03 15:12:02 +01:00
l_samenv
ddc72d0ea7 sea: fix parameter name mapping
- rel_path = ['tm', '.', 'set'] should mean:

'tm': tm parameters first, with /<obj?/tm as main value
'.': then all parameters directly at top level, except 'set'
'set': all parameters  below 'set'
driving happens at object level

- better name mangling (the 1st appearance of the same shortname
  is kept short)
2024-11-28 18:06:14 +01:00
ede07e266c add ori2 2024-11-28 18:05:02 +01:00
dmc
4b543d02a0 varioxb: fix config, om not yet available 2024-11-28 18:05:02 +01:00
a4d5d8d3b7 frappy.server: remove comment about opts in SecNode/Dispatcher
The options given in the node configuration may be used
for both SecNode (equipment_id) and Dispatcher (when the
frappy.protocol.router.Router is used as dispatcher).
It is correct that both remove the options known to them.

Change-Id: I2a34073e4e5490dcf8db577d9cb74788c0cb657b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34989
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-27 17:38:14 +01:00
b37e625df3 frappy.server: use server name for SecNode name
no need to configure the name of SecNode and Dispatcher

Change-Id: I5199bbd77c74e4fe56b527a5a565a8285b0d831e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34988
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-27 17:38:14 +01:00
1dbd7c145a frappy.server bug fix: server name must not be a list
followup error from change 34893
this bug appears in HasComlog, only when comlog is switched on

Change-Id: Ic0db5ae0b0af9981b0c91ebacf2eb6cd704aaa58
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34987
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-27 17:38:14 +01:00
2aa27f1ea5 updated sync_branches for sinq branch
Change-Id: Ic3330c4049b527dc98704fbbd94180dcd4930cb1
2024-11-27 17:38:14 +01:00
b28cdefe8a follow up change for 'better order of accessibles' (34904)
slight change to make it compatible with py 3.6/3.7, where
reversed(<dict>) was not allowed.

Change-Id: Id440870b5523a866b3afb470ba5db9cd6a9bb0ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35002
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-27 16:30:06 +01:00
e0e442814f fix description of ts in ma11stick 2024-11-26 13:48:37 +01:00
66895f4f82 improve lakeshore demo
use super call for read_status

TODO: update tutorial!
Change-Id: I2dd5631908dc370c6e6286587099e25a0e5ee867
2024-11-26 13:40:13 +01:00
49bf0d21a9 frappy_psi.bkpower: improve doc
Change-Id: I0736d1d8a40b0140bfdbf5aca189b8ddc5b22973
2024-11-26 13:39:34 +01:00
e8cd193d0d fix bug when overriding a property with bare value
the bare value must be converted to a updated property.
add also a test for this

Change-Id: I261daaaa8e12d7f739d8b2e8389c1b871b26c5b3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34985
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-19 14:03:35 +01:00
142add9109 add sim-server again based on socketserver
- fix ls370test config file
+ fix issues with frappy_psi.ls370res
+ add frappy_psi.ls370sim

Change-Id: Ie61e3ea01c4b9c7c1286426504e50acf9413a8ba
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34957
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-19 14:03:28 +01:00
Jenkins system
c2673952f4 [deb] Release v0.20.4 2024-11-19 14:01:20 +01:00
Jens Krüger
9fc2aa65d5 Lib/config: Create a list of pathes only for confdir
Under some condition (no general config file) it's possible that the
piddir and logdir as well are lists of pathes which creates some errors
during the server start

This problems occurs at least in NICOS test suite where no general
config file is defined.

Change-Id: I94c5db927923834c1546dbc34e2490b07b0bf111
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34952
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Jens Krueger <jens.krueger@tum.de>
2024-11-19 14:01:20 +01:00
09fbaedb16 frappy.client: catch all errors in handleError callback
put try/execpt around handleError callback

Change-Id: I3d97f085556665189da848e52a7148248f55eb0e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34955
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-15 10:39:47 +01:00
Jens Krüger
5deaf4cfd9 PSI: Fix import error on ThermoFisher module
Change-Id: I691d8f5057fdb19ba14c109399417a7ee9962637
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34954
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-15 10:39:47 +01:00
81f7426739 frappy.lib.multievent: avoid deadlock
use RLock instead of Lock, as queued actions might call
the set/clear methods recursively

Change-Id: Id43aa8669955e6be9f61379d039a4f65eb7b2dc4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34950
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
c69e516873 remove unused file
Change-Id: I969bfb22f2196227abe8c5ecef628a15e6eb75f1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34939
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Jenkins system
64732eb0c8 [deb] Release v0.20.3 2024-11-15 10:39:47 +01:00
Alexander Zaft
1535448090 add generalConfig to etc
Change-Id: I768b136c803d5e197e3653d1b84e147b62a97676
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34924
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
554996ffd3 fixup test for cfg_editor utils to run from non-checkout, and fix names, and remove example code
Change-Id: I6224244392e2a2d0928065ba24abcbe822096084
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34934
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Jenkins system
2d824978a9 [deb] Release v0.20.2 2024-11-15 10:39:47 +01:00
Alexander Zaft
35dd166fee fix frappy-server cfgfiles command
frappy-server <name> errors after 34893

Change-Id: Ifba758fbabc3aef32e20b683f1c1edbfea711a75
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34913
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
aee99df2d0 server: better handling of cfgfile argument
No reason to keep stringly-typed data on that level

Change-Id: Iba8d88301bf36ef6051031d1916d1bac84ede546
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34893
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-11-15 10:39:47 +01:00
8e05090795 generalConfig: fix the case when confdir is a list of paths
convert all env variable values containing ':' into a list of paths
+ fix one case where an env variable is not converted to a Path
+ remove unused _gcfg_help

Change-Id: Ibc51ab4606ca51e0e87d0fedfac1aca4952f3270
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34872
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-11-15 10:39:47 +01:00
Alexander Zaft
eac58982d9 server: service discovery over UDP.
implement RFC-005
- server broadcasts once on startup and answers to broadcasts
- small tool for listening on the port and sending broadcasts

Change-Id: I02d1184d6be62bef6f964eb9d238220aef062e94
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34851
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Georg Brandl
0f34418435 systemd: enable indication of reloading/stopping
Change-Id: I6dd1b3a50234fb0304fb1a5318f2f22d35d464ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34896
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
1423800ff4 server: fix windows ctrl-c
thread.join() blocks indefinetely, not allowing python to handle the
interrupt. Same is true for sleep on windows, but when we only sleep a
second, this is fine. Instead of joining the threads, keep track of them
manually.

Change-Id: I559fe06d9ce005a15388c881e4f076d996aea9dc
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34894
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
e333763105 generalconfig: streamlined config discovery
determine generalconfig file location in order:
  - command line argument
  - environment variable
  - git location (../cfg)
  - local location (cwd)
  - global location (/etc/frappy)

Change-Id: Ie34bcbd5188837075ee7bb7d5029d676ae72378e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34839
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
c09e02a01e Revert "config: allow using Prop(...)"
This reverts commit ba59bd549860797f5bdf15cadfea539754d833cd.

Reason for revert: unnecessary

Change-Id: I4bf46a1de2e699049572f376e84fa39db5dae76c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34888
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
Alexander Zaft
337be1b2bc config: fix typo
Change-Id: Ie90993d9b2d387780fa3faa28fd8d4523f7fc866
2024-11-15 10:39:47 +01:00
Alexander Zaft
752942483f config: allow using Prop(...)
Still maps to the same logic, but it might be a bit confusing to
configure properties with prop = Param(...)

Change-Id: I6bde6a0b015095a8b765d98cb2780f0d42de7e6e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34886
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-11-15 10:39:47 +01:00
0204bdfe2f fix playground
- fix initialization
- add description

Change-Id: Ic210c26edfec709bafa902e32eae04350d571acd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34874
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
facaca94eb better order of accessibles: 'value' 'status' and 'target' first
- predefined parameters/commands appear first, in the order
  defined in frappy.params.PREDEFINED_ACCESSIBLES
- other (custom) parameters by inheritance order
- remove paramOrder attribute (not used currently)

Change-Id: If4c43189e4837dba057dc0a430ac6c3d1ae10829
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34904
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
0f0a177254 frappy_psi.sea: bugfix: revert change of updateEvent to udpateItem
revert some of change 34813
SeaClient is based on ProxyClient, not SecopClient
-> updateItem is not defined there

Change-Id: Ib3049038481917ec7a11b9fb2d285cedff5febbb
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34873
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-11-15 10:39:47 +01:00
l_samenv
ada696e72b add peltier cfg 2024-11-14 16:09:31 +01:00
l_samenv
1d70a90270 add addon ah2500sea 2024-11-14 16:04:55 +01:00
l_samenv
20da7592da add PE stick
example of how to do a software calibration on a mercury channel
with hardcoded wrong calib curve
2024-11-14 15:40:46 +01:00
l_samenv
e750e69045 ma11stick/ovenstick: fix double meaning entry 2024-11-14 15:39:43 +01:00
l_samenv
11a65b485b fix ah2700 / ah2550 settings 2024-11-14 15:39:43 +01:00
dmc
edf5a5568b frappy_psi.sea: fix buf, revert change of updateEvent to udpateItem
this is not possible in ProxyClient
2024-10-24 13:29:26 +02:00
dmc
f382a01d86 fix case where confdir is a list of paths 2024-10-24 11:46:23 +02:00
Alexander Zaft
3c69dcb170 core: fix Dispatcher and SECNode opts handling
both tried to consume everything before, also making the check for
unknown options afterwards pointless

Change-Id: I7e44c088163e0b99ac509a2c0f757270807d97ab
Fixes: #4912
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34837
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
b889a86461 server: show interfaces as custom property
Change-Id: I129be1228b8a04386db5fe370ebdc2ec6ce8050a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34838
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
c7143a6dc7 server: fix positional argument lint
Change-Id: Ib718826e7bbce2c6fcc9b39879c30baec1ecaa5a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34845
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
c2a3821000 sim: make amagnet sim cfg startable again
Change-Id: I1e7b7dd6e4069c616f49edbe4e223f501a000398
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34844
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-10-23 09:27:35 +02:00
Alexander Zaft
1cebf3998f simulation: fix extra_params default, ccidu1 cfg
Change-Id: I80672f1c070054871708961bc6641457f8e409ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34843
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:26:48 +02:00
Alexander Zaft
bea994aaa2 test_server: basic description checks
Change-Id: I732ac2349f7e7ab2579f67cc6e51989703531087
2024-10-23 09:26:48 +02:00
Georg Brandl
bc0925fca7 pylint: do not try to infer too much
Change-Id: I1aabf4c59fc47e888e8cd096a8228842f35ff769
2024-10-23 09:26:48 +02:00
Jenkins system
09235cb145 [deb] Release v0.20.1 2024-10-23 09:26:48 +02:00
Georg Brandl
824d3e7b7a lib: there might be no confdir in "cfg"
Change-Id: I0832de4564a2c1ff439c486ae6cbaa776ebf1e59
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34833
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:26:48 +02:00
Georg Brandl
dab963f1bb remove sim-server
asyncore is deprecated for a long time and now removed in 3.12

Change-Id: I32eb18797dd13663de08ebedc38ce3de4b5ede93
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34830
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:26:44 +02:00
Georg Brandl
b93254b553 remove old unused parse module
Change-Id: Ie94217504a65c21a7a8aa7221f9028a689476ffd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34831
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-23 09:25:39 +02:00
Georg Brandl
ec667c8151 remove unused test class
Change-Id: I887a66befa834a72bc684dc5edbcb5862a0d0b71
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34832
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:25:39 +02:00
Georg Brandl
56c7bbc831 gui: do not add a console logger when there is no sys.stdout
Change-Id: Icfd39bd508b5d482c902e6e781cbc557085b0c2e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34829
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-10-23 09:25:39 +02:00
Jenkins system
c3a87e43be [deb] Release v0.20.0 2024-10-23 09:25:39 +02:00
Georg Brandl
1fcd8d13fc setup: fill long_description and url
Change-Id: Ib5db4d9c33f205d181ed78c65265601caf23a53d
2024-10-23 09:25:39 +02:00
Georg Brandl
f697b9ad57 setup: fix classifiers
Change-Id: I473785df9c1157a77d02c3e1114bb6633d01149f
2024-10-23 09:25:39 +02:00
Georg Brandl
e4a14bc27f update declared version to 1.0 final
Change-Id: Iec2564a5c95baf95de5f7e63ed1890334477c70f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34793
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-23 09:25:39 +02:00
dmc
03867c1f43 ma6stick: fix for ts (heater not working?) 2024-10-22 10:58:02 +02:00
16abfdc65e fix ma7_samplehead_cfg and thermalcond_cfg 2024-10-22 10:52:23 +02:00
601ad9d301 eurotherm_cfg: fix meaning 2024-10-22 09:28:39 +02:00
4892c2fd8f frappy_psi/parmod: fix Driv
registering updates should be done in initModules
2024-10-22 09:28:39 +02:00
25986d67aa add more datatype tests
check from_string and to_string are counterparts
redesign standard value checks for this

Change-Id: I825cdba5955596096fd11ab52de571f05845d7ae
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34737
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:08:17 +02:00
f8d8cbd76d add Datatype.to_string as counterpart of .from_string
This allows simple UIs using stringified versions in
text input.

- add frappy.client.SecopClient.setParameterFromString
- fix datatype tests
+ add updateItem to CallbackObject (for doc)

Change-Id: Ic7792bdc51ba0884637b2d4acc0e9433c669314d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34736
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:08:17 +02:00
f9f713811e do not fail when generalConfig.init() is called twice
Change-Id: I7132b71f906fc8a77b6fedcdcc2c7d4a3e48830a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34818
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-10-17 08:08:16 +02:00
Enrico Faulhaber
72eb00fb27 add test for importing custom modules
related: #4882

Change-Id: I605de7fd43be146c84f4324d2a8eebe0aa11da79
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34814
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:08:16 +02:00
Georg Brandl
7111d73226 install libgl1 for pyqt6
Change-Id: I873f97fb497364d9c647797a899cf348c430214b
2024-10-17 08:08:16 +02:00
Georg Brandl
19d5756eb0 install pytango for testing
Change-Id: I04e0dbc6d59b388dbcf6657b8815642fcdc25094
2024-10-17 08:07:11 +02:00
Georg Brandl
d6b31222b6 new setuptools needs new importlib_metadata
Change-Id: Ie4220f7ec2c11b3dcf64c65b3ed97a3d9129af5c
2024-10-17 08:07:11 +02:00
Georg Brandl
b3a2f33151 ci/Dockerfile: do no use pytango from upstream
Change-Id: Ie002aff67e0fb4d6daf6f621c58be8c5ab71af9d
2024-10-17 08:07:11 +02:00
Georg Brandl
380c8108eb remove old "buffer" message
Change-Id: I010f535ec746ef15ccfc2929a2e62ccb83894c33
2024-10-17 08:07:11 +02:00
Enrico Faulhaber
cde09694a5 ci: also install gui requirements for additional tests
Change-Id: Idc40699d470fb6449366a1cd75a3207cabcdd4a4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34815
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-17 08:07:11 +02:00
73a54dfc44 frappy_psi.sea: avoid error on import
the previous code raised an error when generalConfig.init() was
not called before importing. defer evaluation of seaconfdir to
the time it is used

+ use updateItem instead of updateEvent to avoid pylint complaint

Change-Id: I0da0891a8d4091102d2a149705f5546e2f6fd187
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34813
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-10-17 08:07:11 +02:00
Georg Brandl
025eb5fff5 fix descriptive data
- remove unspecified "version" and "interface" properties
- add frappy version to "firmware" property
- keep custom node props with underscores

Change-Id: Ib047e4765a90f2833f9e41af69a665554dd20737
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34792
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-10-17 08:07:11 +02:00
Alexander Zaft
f36af47b98 psi: change open calls in sea
Change-Id: I4fe235027df4ea935d84e29895eb280f620afbdf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34665
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-17 08:07:11 +02:00
Alexander Zaft
13db0d6bc6 generalConfig, config: use pathlib
- switch to pathlib
- represent multiple confdirs as list of Paths internally, not string
  with pathsep

Change-Id: I1418e561641e27cd904af0762be056cd66ee1919
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34464
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-10-17 08:07:11 +02:00
Alexander Zaft
fe0aa3d7d5 all: start using pathlib
Change-Id: I2b0d6ff8f534382913414fa9b35150d6f697acb4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34463
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-10-17 08:07:11 +02:00
6c2b1ea355 fix meanings and SEA vti mapping
- tt:value (VTI temperatures from SEA) should not be sample T
- VTI meaning must be ['temperature_regulation',20]
- stick ts meaning must be ['temperature', 30]

Change-Id: Ib6d662bb27d898958c62c02878d9551161cbc8c2
2024-09-27 15:19:29 +02:00
7ee219ce7a cfg: fix 'tt' for all SEA cryos: tt:value is now vti temperature
before tt:value was the sample temperature

Change-Id: I2070441d3acc93d9ed18bb1ea650bca156443619
2024-09-27 14:57:18 +02:00
ba2b5ac786 frappy.client.interactive: improve order of callbacks
the user would expect that updates are shown in the order
they appeared in the SECoP connection.
For this register_callback needs an additional parameter
to suppress initial callback.

Change-Id: Id1d7605d739b02ec799b3768ae2399558969c381
2024-09-23 15:07:03 +02:00
abfb8afdc5 frappy_psi.motorvalve: move doc string to class
- this will allow to add other classes if needed

Change-Id: I452c2be19456829796d899891719f5659fac2ba9
2024-09-23 15:05:54 +02:00
7fdb2e7e2f frappy_psi.trinamic: improve
- try several times in case of no success (configurable)
- write default values to the controller
- add limits

Change-Id: I7974d7056bbad48091653378366943ccf3e6f945
2024-09-23 15:04:44 +02:00
dd0cb2e1dc GUI: allow enums to be plotted
numpy.finite() does not accept enums -> convert to float first

Change-Id: Ib740800a7410ada38fb48711d4da676af8b64b17
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34608
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-09-13 09:03:18 +02:00
227f67a4c7 GUI: avoid space needed for closed groups
the empty QLabel in widgets for readonly parameters was not hidden
with the group.

Change-Id: I0e5ad49c3b693483a3cabf849e7962925cfcc434
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34607
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Alexander Zaft
c92d6471eb bin: remove make_doc
relic from markdown documentation

Change-Id: I8cb1913e6b6d1b8efe77d4d7f982f95e75166707
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34465
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Jenkins system
991f4781c4 [deb] Release v0.19.10 2024-09-13 09:02:04 +02:00
Georg Brandl
5083db8d92 remove walrus
So far, frappy is still supposed to be 3.6 compatible

Change-Id: Ieb56c6500d58cdc1fe2f34b1448b05ba74b0fa6e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34326
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Alexander Zaft
7c54ac735d debian: let frappy-core replace frappy-demo
Fixes: #4888
Change-Id: I32781773cbce9e29381df482b8bd9ba992dcb9e4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34323
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Jenkins system
d6b28075d5 [deb] Release v0.19.9 2024-09-13 09:02:04 +02:00
Georg Brandl
d555a58781 debian: fix missing install dir
Change-Id: Id865c58b66af71dbb6631e5856f1f8563946fa40
2024-09-13 09:02:04 +02:00
Jenkins system
e6639fbc08 [deb] Release v0.19.8 2024-09-13 09:02:04 +02:00
Georg Brandl
d9f2fb291a debian: move demo into core
Change-Id: I545850163f0fd6e560dcf62a008cb9f1aa544af9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34309
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Jenkins system
27be8c11fd [deb] Release v0.19.7 2024-09-13 09:02:04 +02:00
Alexander Zaft
bd84a69537 lib: GeneralConfig fix missing keys logic
Change-Id: I814511fff6fbf7c94e30a052bff0712fad9805b5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34306
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Jenkins system
a1dd8e2168 [deb] Release v0.19.6 2024-09-13 09:02:04 +02:00
Alexander Zaft
f0f12d6d96 lib: Fix GeneralConfig defaults handling
overwriting defaults before init() had no effect, as the values were
replaced there.
Now, only unset defaults are updated, keeping the overrides.
Also fix unconditionally taking the values from environment variables.

Change-Id: Idf1c5e2338403e061d20c11ed9c4803d535eb188
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34304
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Georg Brandl
96a388eae9 gui: save/restore window geometry
Change-Id: I98008fc12479206018416d57ef248a9942b73490
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34297
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:02:04 +02:00
Georg Brandl
c272a8d619 GUI: allow starting in detailed view by cmdline flag
Change-Id: I4248bfee47d807833e02a35ce8dd85fa6b297e77
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34296
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:02:04 +02:00
Jens Krüger
f2940d3f23 SINQ/SEA: Fix import error due to None value
If the environment variable isn't set a None value is returned. Now an
empty string will be returned

Fixes: #4882

Change-Id: I3e319daebf10e2d8ea3ee00f6094e6896e54f51b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34234
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Jens Krueger <jens.krueger@tum.de>
2024-09-13 09:01:01 +02:00
Jenkins system
925df6f4fa [deb] Release v0.19.5 2024-09-13 09:00:42 +02:00
Alexander Zaft
ff772e578e pass logger parameter only for mlzlogger
The mlzlogger has an extra argument we want to keep using.
To keep compatibility, check if we got the mlzlogger or something else.

Change-Id: I1a4f4e7651370dd71124ab7c3608c6573a585dd9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34292
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:00:42 +02:00
Alexander Zaft
6f465be567 add RemoteLogHandler independent of MainLogger
installing a custom logger was not possible, since the RemoteLogHandler
was not installed.
Additionally, search for the RemoteLogHandler recursively upwards, since
not all loggers copy their Hanlders to their children.

Change-Id: If3e19966d9289cacd926648582e9718b7eab279c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34288
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:00:42 +02:00
Alexander Zaft
1f5bba5575 add missing requirements to setup.py
Change-Id: Ie0d3eae3a7aeb1f28983476b00fe012c916051d7
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34287
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-09-13 09:00:42 +02:00
Alexander Zaft
a7fc1e4342 client: fix how to raise error on wrong ident
leftover error_map from long ago, turned into direct raising of
HardwareError

Change-Id: I8772e20133502bb0a997d5317a74e2bd16b780c6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34279
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 09:00:42 +02:00
Jenkins system
6e1cd30678 [deb] Release v0.19.4 2024-09-13 09:00:41 +02:00
Georg Brandl
acf9a03aa4 actually exclude cfg-editor
Change-Id: I1a31fd96eb8962cff92cda349201ebff4a0dddbc
2024-09-13 09:00:41 +02:00
Jenkins system
79827baf2a [deb] Release v0.19.3 2024-09-13 09:00:41 +02:00
Enrico Faulhaber
12d7b5dae9 remove cfg_editor for now
as it was not functional...

fixes: #4881
related: #4882

Change-Id: Ic8c5ee06fcdd48b8b0562b5b1275296d2b155f06
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34226
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Jens Krueger <jens.krueger@tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-09-13 09:00:41 +02:00
Jens Krüger
318b3ad412 Update copyright year
Change-Id: I7fe65e46639c2d8948fa93303ee9b14393e8bfca
2024-09-13 08:59:40 +02:00
Alexander Zaft
4305d84ef8 mlz seop: add pylint
Change-Id: I096dff796c88bf1b23778aa57c73f9aa77712372
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34127
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 08:59:26 +02:00
Alexander Zaft
177f49ca3f mlz: fix delayed import of he3cell
Change-Id: Ia15693a11f9d1526b4a50be4adbad19640eafe93
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34126
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 08:59:26 +02:00
fb5e468048 frappy_psi.sea: use raise from
this was complained by Jenkins after merging (1)

Change-Id: I9e4eb57004d218021978d6e9e06e1cbd42ec5e9c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34024
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-09-13 08:58:53 +02:00
Oksana Shliakhtun
6c01a1e48a Draft for the Keythley Pulse System driver
Change-Id: Idd6f86acbaac178ab8031625b36ded1351de6a34
2024-08-27 15:16:27 +02:00
Oksana Shliakhtun
96412cb480 Comments
Change-Id: Ie7fe10f704aec62c19cae0bab16d43d55d911a36
2024-08-27 15:16:27 +02:00
Oksana Shliakhtun
807afba53b Changed temperature range
Change-Id: Ib2a0bc59b191d33e65420375385d8807754193a9
2024-08-27 15:16:11 +02:00
Oksana Shliakhtun
97032193bf Changed temperatures
Change-Id: I1411e425bd911b73cfcb459de50e7eea2cd15c51
2024-08-27 15:15:48 +02:00
Oksana Shliakhtun
a3c1399854 Driver with comments
Change-Id: Ic2d35960de6b33e4d61ad1920d2416e2d5ed1ded
2024-08-27 15:15:39 +02:00
Oksana Shliakhtun
f0eb7d95f1 Added documentation
Change-Id: Id6e26a4c28fe080a55099cd54d0fa85c15946657
2024-08-27 15:15:01 +02:00
Oksana Shliakhtun
c1403763f4 .
Change-Id: If177029157edbd6123e9f41883dbb6c639a68852
2024-08-27 15:14:52 +02:00
Oksana Shliakhtun
d38b672a9a Status and autorange implemented for AC resistane bridge
Change-Id: I8c94660c3b76cc78886e9e074b4ce8114fbb7f9e
2024-08-27 15:12:37 +02:00
Oksana Shliakhtun
7c96b83aff Communication with the modules for the ac resistance bridge.
Change-Id: I1c144bf0bfc7c8c3090aa7cf3f32f1d4d046dca7
2024-08-27 15:12:37 +02:00
Oksana Shliakhtun
3ee6e32a46 Communication with modules for a resistance bridge
Change-Id: Ia8622cd3620dff68566768411a05f9cf3618771a
2024-08-27 15:12:37 +02:00
Oksana Shliakhtun
c20801c8fe Driver and cfg file for ac resistance bridge
Change-Id: I77b2294b57315fcf7d94996a2a68fcac72866710
2024-08-27 15:12:17 +02:00
Oksana Shliakhtun
a5e698163b Frappy driver for a HP multimeter
Change-Id: I2e9dc5131ea9a7317d69c42dd49388216e77f72f
2024-08-27 15:12:11 +02:00
Oksana Shliakhtun
5376490a7e New driver for AC Resistance Bridge (with SIM921 modules)
Change-Id: I2c2da421453af0f41703805092423f9b02d1f9b4
2024-08-27 15:11:59 +02:00
Oksana Shliakhtun
9d50412a38 Haake driver
Change-Id: Ib6aec31ada835ebfb2f8a06b119e3b8189f9f51e
2024-08-27 15:11:48 +02:00
Oksana Shliakhtun
39dbe1149c Driver for HP multimeter
Change-Id: I45f70758331680fb7b044d28bf0dc50781d912d3
2024-08-27 15:11:35 +02:00
a281583cd2 dil5: fix config file after change of frappy_psi/picontrol
+ fixes in frappy_psi/picontrol.py
2024-08-21 16:08:44 +02:00
ad15ef3cdb fix camea be filter 2024-08-20 11:42:06 +02:00
7536454e96 frappy_psi/sea: yet another fix: BUSY after write target
it seems update_is_running runs in parallel to write_target
and read_status can not run before write_target has finished
due to locks -> call read_status within write_target
2024-08-20 11:39:04 +02:00
bfbb8172e0 improve picontrol
after suggestions from Marek (WIP)

- keep Mareks version created during Markus absence for now
- add a class with input_module (which is not a mixin)
- not 100 % tested: HasConvergence now inherits from Drivable

Change-Id: I6b3896e7c0fdaa4379d1cbc5603d43bd7a0b3a48
2024-08-09 10:56:31 +02:00
l_samenv
258ec60b4c frappy_psi.sea: fix issue with missing BUSY after change target
The command 'maw' in NICOS sometimes does complete immediately
instead of waiting for reaching the target. It seems this affects
only SEA drivables. The more important fix for this has to be
done in SEA. The fix here is just to improve behaviour in case
SEA would not do as expected.
2024-08-08 16:35:28 +02:00
l_samenv
2f396e5897 frappy_psi.sea: fix mechanism to avoid ambiguous parameter names
previous intended behaviour: when an ambiguous name appears
it is prepended by its parent node name in sea separated with
underscore (recursively). however, this was not implemented
properly and did not work.

new behaviour: when the short name of a parameter is ambigous
it is using the full path, joined by underscore
2024-08-08 15:52:48 +02:00
2c102ad38b config file for keithley 2601b source created
fixed bug with limits in driver
2024-07-24 17:39:14 +02:00
b3519c7317 created config file in the new format
fixed a bug in the vlimit
2024-07-24 14:56:35 +02:00
9caa3f3e08 change razorbill port to 3000, as it can not be connected in subnet 2024-07-11 16:54:35 +02:00
dmc
bb11f7cc20 add ori7_stick 2024-07-11 16:53:02 +02:00
ffe6f3cce0 fix bug with status (assign string to tuple) 2024-07-11 16:48:42 +02:00
91a91d6483 ma7_stick: disable drivable ts because of bug 2024-07-11 16:47:51 +02:00
dmc
7131536770 fix sea/ori7.config.json for use sith std stick 2024-07-08 16:08:49 +02:00
dmc
82c1081b69 fix issue with seadesc
frappy run main seadesc did no longer work.
fix this
2024-07-08 16:08:49 +02:00
l_samenv
ff2fcf7651 rename razorbill forwarder addon 2024-07-05 14:18:50 +02:00
21dae2d9ce ACM1219: add checkHWIdent
waiting 0.5 sec before the first communication helps to start
properly

+ added usb dev names for box
2024-07-05 10:50:47 +02:00
Paul Neves
476d2087f6 ACM1219: remove wait_before 2024-07-05 10:50:47 +02:00
Paul Neves
bb6cf9caa1 Updated the ACM1219 driver 2024-07-05 10:50:44 +02:00
Paul Neves
c3b1ce4b8c added GNU license 2024-07-05 10:50:19 +02:00
Paul Neves
e4eb5989c3 made displacement and force calibrations writable and updated capacitance channel descriptions 2024-07-05 10:49:34 +02:00
Paul Neves
48393b2332 added RP100, ACM1219, and dummy classes, and razorbillUC220T config file 2024-07-05 10:49:30 +02:00
l_samenv
9eb8f2efc8 add T forwarder for razorbill 2024-07-05 10:39:44 +02:00
46f815af38 [WIP] work on CCU4
- nv control

Change-Id: I34e634d1e167f0a60d55b014c7117c9274d83c50
2024-07-02 11:11:40 +02:00
09f4f1d192 frappy_psi.sea: use ReadFailedError
change error class on reading parameters in SEA from HardwareError
to ReadFailed. This is in most cases more appropriate.

TODO: find errors in SEA that should be should be HardwareErrors
and a mechanism to indicate this

+ for errors related to disabled modules use the DISABLED status

Change-Id: I0342a34185a66dcf874c6ca034b7cefc98bf9c8a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/34022
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-24 13:43:06 +02:00
15fc9ca16c add sim for ls372
+ fix bin/sim-server

Change-Id: I6cad963d9e37faea172ca51a327474406ecafa4a
2024-06-19 17:19:19 +02:00
c6056ad1de [WIP] frappy_psi:ccu4: add HeLevel, N2
Change-Id: Ib31ec440ecc51b01035d783065cb805b942b61b1
2024-06-19 17:19:19 +02:00
4da6aa95d7 frappy_psi/ls372: add changing pid
Change-Id: I8768b1e6609a42553b8e98866540fe33d1b5cd89
2024-06-19 17:19:19 +02:00
fa37b43be2 better behaviour on startup in case of errors
- fix a bug then TcpServer can not start dye to address in use
- report errors when restarting interfaces
- increase timeout. the timeout for waiting all interfaces
  starting up must be higher than a potential successful
  startup of TcpServer, which is currently ~ 10 sec
  (might be reduced, but at both places)

Change-Id: I88b967c4baff79fdf94f4c849dd713d2cba6fabc
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33985
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-06-19 17:19:19 +02:00
986065e1f6 frappy_psi.extparams.StructParam: fix doc + simplify
- the doc string contained wrong, obsolete information
+ simplify: remove customizeable mapping member name -> param name

Change-Id: I0ffdcb336f45001d45f68238b56e1e257d98dd3d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33993
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-19 17:19:19 +02:00
Jenkins system
455f15d975 [deb] Release v0.19.2 2024-06-19 17:19:19 +02:00
Enrico Faulhaber
cefd0fe8b5 frappy_mlz/entangle: fix missing status enum
finally!

Change-Id: I5be4ded7c8ee87a09be44ba474e26cd023c917c6
2024-06-19 17:19:19 +02:00
9cd38375c0 frappy_psi.sea: various improvments
- always open asynio and syncio connections (conenctions for
  update and command)
- better synchronization when reconnecting using threading.Event
- nicer error messages

Change-Id: Ia435c3ccfa2732be4aa9f24a3b6e8484fab715a3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33909
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-19 17:19:19 +02:00
86b888b43a fix ovenstick cfg
fix attached modules:
- 'read' instead of 'value_param'
- 'write' instead of 'target_param'

+ remove comment in cfg/stick/thermalcond_cfg.py
2024-06-19 15:29:29 +02:00
9eb83df7de fix stick cfg of ma7 and ma11
fix attached modules:
- 'read' instead of 'value_param'
- 'write' instead of 'target_param'
2024-06-19 14:57:37 +02:00
20596744f9 frappy_psi.triton: fix heater output issue
when output_module is not HeaterOutputWith range, the heater limit
can not be changed

Change-Id: If25a609e9f9667dc111cb220024388a51df993ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33913
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
0a98776e27 frappy_psi.triton: bug fixes
- fix channel numbers
- make sure some channels are selected

Change-Id: I11c553805ed5ee6235e54ce56a5ea68160d1d212
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33911
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-06-17 15:20:21 +02:00
f5667a9267 frappy_psi.picontrol: software control loop
example usage: use a temperature controller without changing
the calibration setting:
reading the raw sensor, calibrate by software and use 'manual'
heater output

Change-Id: I3dbcf37e7726b48a0516d7aa30758be52b80fe58
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33910
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
8b27e4012c frappy_psi.ah2700: auto create loss module with Pinata
the loss angle is a separate quantity, which is preferred to
be an extra module. create this automatically.

Change-Id: I97f6be48f3411d8143f2ff85c2c61711fc71e8d6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33908
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
Alexander Zaft
6837b82791 add option for delayed imports
will make setup checking easier, although it does not work for all cases
(from imports for example)

Change-Id: I2e5cf9b427a6f8e6f603d9662cdb9700d5f9ad9a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33893
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-17 15:20:21 +02:00
e093bdae96 bug fix in frappy_psi.convergence
+ various doc improvements

Change-Id: I8ce2a1f006a5e4870285ce1f6015510e21d01a13
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33906
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-17 15:20:21 +02:00
a4ee261744 cti7: add cold finger temperature 2024-06-17 10:40:20 +02:00
e09ed9ebe3 move magnet from flamedil bananapi to flamemag raspberry 2024-06-12 11:25:49 +02:00
8bc0671f73 fs furnace: move PI with relais to frappy_psi/furnace.py
Change-Id: Ia8bec296035b3ae23a698f041fe8be39d925d996
2024-06-12 11:25:22 +02:00
26f9c177f7 HasControlledBy: update target without switching to self control
when a HeaterOutput module is used e.g. from a software loop,
a method is needed to update the output without switching to
self-controlled

Change-Id: I9c83b4e172e14812a405e836757491622ff5f949
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33903
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-12 11:25:22 +02:00
4c6bc2ba68 frappy.lib.asynconn: handle ConnectionResetError nicely
Change-Id: Icba24ffb82369aa78e431d12260f4f3cc795e511
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33902
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-12 11:25:22 +02:00
l_samenv
ce7de98dc7 fix missing update after error on parameter
the main error was a suppressed update when the value does not
change, but the readerror gets None

this error was the reason for strange behaviour in frappy.proxy
while finding the cause, other improvements were done:

- nodeStateChange: add 'activating' to the possible online states
- improve status handling in proxy

Change-Id: I2a1873065ab051bdba2200f50e6ad09ae55e168e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33901
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-06-12 11:25:22 +02:00
Jenkins system
1c229c33bd [deb] Release v0.19.1 2024-06-12 11:25:22 +02:00
Alexander Zaft
2d08f25993 mlz: derive Digitaloutput from Drivable
as the underlying entangle *DigitalOutput may be BUSY and frappy.Writable
disallows this.

Change-Id: I6e4861c6d014f59ad4cc2355a438130173bf6569
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33849
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
2024-06-12 11:25:22 +02:00
Alexander Zaft
89df37462c datatypes: add more detail to error messages
the error messages for tuple and array swallow all details useful for
debugging. add the original exception for some context

Change-Id: I8e1036bfab10c09d5f9c8af05ac3306af89f54c4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33850
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-06-12 11:25:22 +02:00
69938f7ce8 frappy_psi.ah2700: create loss module automatically
using the Pinata mechanism

Change-Id: I07b06b2563241600fbe454366089717a59d55bdc
2024-06-12 11:25:22 +02:00
dmc
913b40ac92 varioxbstick: add meaning to T_sample 2024-06-12 09:26:01 +02:00
070e78f626 cfg/sea, hepump: add neodry to enum 2024-06-11 13:21:15 +02:00
l_samenv
a44f3fae50 frappy.modulebase: fix missing update after error on parameter 2024-06-11 08:36:36 +02:00
dmc
5a54503fe7 varioxB: add std stick 2024-06-10 15:48:37 +02:00
l_samenv
f702854066 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2024-06-10 10:11:52 +02:00
l_samenv
67fa50a9e0 [WIP] fixes for gas10ka / varioxB
treat proxy for io correctly
2024-06-10 10:11:03 +02:00
dmc
5e5f262472 remove dinp/dout from sea json temperature
dinp and dout is not available on ls336 and not really
needed on ls340
2024-06-06 15:28:21 +02:00
9995ac8165 fix ori4 config (align to other cryos) 2024-06-06 08:59:32 +02:00
b1f9c74269 frappy.client.readParameter: handle connection errors correctly
update cache in case of connection errors, as they are not handled
in the rx thread

Change-Id: Icf3377020ec314fcef2982a4e6dc64356f787273
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33744
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-28 17:29:55 +02:00
63210c9924 SecopClient.online must be True while activating
as callbacks trigger by updates while activating may check for
online state

+ remove unused imports

Change-Id: I37df839abf6b7225389b803347234a3d0bc8d799
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33745
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-05-28 17:29:55 +02:00
Jenkins system
47c5e297d4 [deb] Release v0.19.0 2024-05-28 17:29:55 +02:00
Georg Brandl
6cd83eabcc fix LimitsType to be actually used and validated
Change-Id: Id0f67e91f4ff57d4c29c33960e736c8c3ae77209
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33683
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-05-28 17:29:37 +02:00
Jens Krüger
caaefec6db Fix abslimits reading from entangle device
Fixes: #4864
Related: #4866

Change-Id: I393a35784766c0e09367a90debfc8b59b290626e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33672
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-05-28 17:29:37 +02:00
Georg Brandl
6dfb3bcee8 add config for the Entangle simulation server
Change-Id: I9e7564707fc98d3b5dc3182d7837b222aefef582
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33692
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2024-05-28 17:29:37 +02:00
l_samenv
d492f7326f frappy_psi.parmod: make async 2024-05-07 10:25:02 +02:00
l_samenv
7929c37027 frappy_psi.sea: better timeout behaviour
timeout parameter not only for requests but also for connects
this might avoid blocking situations
2024-05-07 10:23:21 +02:00
76349e38f9 add cfg files from zebra: Ma10heat, ma10high_t, ma6_sampleheat 2024-05-03 08:25:50 +02:00
647d87f70f frappy.client: avoid shutdown callback sent twice
in case th rx thread crashes, the shutdown callback is called twice
-> improve cleanup code in __rxthread

Change-Id: I0d20aa4304d94b17565b018ad8528d61bbbcbc83
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33614
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-03 08:14:10 +02:00
798c268eb4 hvolt_long_cfg.py 2024-05-02 16:36:43 +02:00
9467f5233c increase mercury timeout
+ set try_cnt for IPS to 0 (do no longer know why)
2024-05-02 14:54:52 +02:00
a7ff73a34d set comlog automatically on 2024-05-02 14:54:52 +02:00
dmc
bf018e74ba add backlash to MA10 motor 2024-05-02 14:47:36 +02:00
dmc
801f80af7f add cfg files for gas stick 2024-05-02 14:47:36 +02:00
26fa5371e9 add piezo/thermalc from sans 2024-05-02 13:06:40 +02:00
2bad1ffee5 update haake/ma7/ma11/ovenstick from sans 2024-05-02 11:47:33 +02:00
b2b77c70ea SecopClient.__del__ must not call callbacks
otherwise a nasty deadlock might happen in NICOS

Change-Id: Ie1a333979b77683ce35683aede042ce86159fe65
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33583
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:40:32 +02:00
192cde605e frappy.client.SecopClient: add the option to use no logging at all
using a dummy NullLogger

Change-Id: I1f12c7307d3d8e37243488b8a11c6abcf087af86
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33582
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:40:32 +02:00
c7d23e40e9 frappy.client.interactive: improve logging and error handling
- redesign logging, using python logging
- stop watching when an erro happens during update

Change-Id: Ibe96569ecc45df429b571232374c451de3f82f1f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33431
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:38:49 +02:00
2561e82086 frappy.client: improve error handling more
- implement a 'handleError' callback
- SecopClient.handleError is registered as a callback and by default
  logs errors up to a limited number of times
- the cache is customized to return an item indicating an undefined value,
  helping to avoid follow up errors.
+ frappy.errors: cosmetic fix
+ frappy.client: cosmetic changes

Change-Id: I4614e1d27c7aea3a1a722176c6be55f8563597cd
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33429
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-05-02 08:38:49 +02:00
55c96ffe4f add FW cfg 2024-04-30 09:24:07 +02:00
17a44ef42a fixed dilsc, fist try before tests
Change-Id: Iaac5f07c27879c7c17be2e25defde19e9ddd1566
2024-04-29 12:18:12 +02:00
Alexander Zaft
fcdee8e3ec gui: sort qt imports
Change-Id: Id8dfdd7b07bff6e337eb71a436dd51762f9b5fa7
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33389
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:20 +02:00
dddf74df9e frappy.client: catch errors on callbacks
buggy updates or errors in callbacks are now converted into
error updates, buggy error updates are skipped.

-> the receive thread should no longer crash

Change-Id: I97e3999db73e64f73dfbc380fac3d7685b6ca31c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33386
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 17:01:03 +02:00
Alexander Zaft
ac251ea515 test: add uri attach test
Change-Id: I8a021c53c9987ed03ce31c8481f73573b943d1f3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33417
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:03 +02:00
Alexander Zaft
9e4f9b7b95 gui: more specialized input widgets
Change-Id: I8b768b2069ae28a58d540165bd95f31ad7e984e0
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33390
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:03 +02:00
4f65ae7e46 frappy.client: cleanup properly after a reply timeout
when a reply to a request is not received within 10 s a timeout
error is raised, but any further requests with the same identifier
will be blocked - fix this

Change-Id: Id2fbc8bb6e6ecfd54bba1fa57b62e626e49b54c8
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33385
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 17:01:03 +02:00
Alexander Zaft
a73b7e7d88 gui: catch invalid inputs
Change-Id: Ie0525e4ef9a94085da811e7eaa2e0b7430bade95
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33388
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:01:03 +02:00
Alexander Zaft
76a78871b4 core: cover errors in handler setup()
Change-Id: I0bb2f07e26717205c013dfedec6e1beca2947d17
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33239
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:24 +02:00
Alexander Zaft
118e22ee44 core: introduce common handler class
- make RequestHanlder based on socketserver.BaserequestHandler
- split handle() into subfunctions
- rework TCPRequestHandler

Change-Id: I62452e21c03b9cb9937673ce9c8663765798f863
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32984
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:24 +02:00
Georg Brandl
c63f98f3cb dispatcher: consistent handling of missing timestamps
Like in `read` replies (line 193), `update` now omits the timestamp
instead of returning {"t": 0}.

Change-Id: Iaee0fccae81040cdd6075b0e4a8600c032aec03d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33382
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:09 +02:00
Alexander Zaft
6514a1b2ee core: add websocket interface
Change-Id: Ic62abeef6fb73f4a1b3d29f9225ba164de9e3e93
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33240
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-04-08 17:00:09 +02:00
aeec940659 follow up fix: handler export=True correctly
this seems to be broken in change 33266

Change-Id: I4da78f297976daeac0a0709b9c86e6e28fc122bf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33268
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 17:00:09 +02:00
4571af8534 follow up fix for change 33168
triggerPoll must be set on attached io

Change-Id: If3fa1016efa6047371380790f60db246d87b3628
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33269
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-04-08 16:59:19 +02:00
l_samenv
adfb561308 add cetoni pump for flowsas project 2024-04-03 11:31:38 +02:00
70a31b5cae attocube: remove seperate pyanc350 python module
- implement positioner as an io class
- proper shut down behaviour

Change-Id: If04176f779809fd5b08f586556cac668cf188479
2024-03-28 10:12:18 +01:00
l_samenv
8ee97ade63 adjust cfg foe attocube to current example 2024-03-27 17:13:58 +01:00
1715f95dd4 frappy_psi.attocube: add lock protection to hw access
in order to avoid sporadic timeout problems

Change-Id: I36f67ae72b65e9c1f3179cae942b0a7d94584e55
2024-03-27 17:08:24 +01:00
db29776dd5 reworked attocube
- step_mode: soft closed loop, stepwise, reading encoder after a delay
- calib_steps command to determine step size

Change-Id: I27bdffb4d564ac9c55a6473704ac2de6ad92bac8
2024-03-25 16:47:13 +01:00
a2905d9fbc improve attocube driver
- driving in an extra thread, hoping not to miss end of travel
  status bits (does not work always)
- maxtry parameter for trying several times

TODO: move by step (in an other thread)
Change-Id: I89b51d1f6926f2fd26ec22d43aede377b5231583
2024-03-22 14:38:23 +01:00
16b826394f fixes for attocube
Change-Id: Id5eeb749ba010fec59d1c2f8a3258ee34a47e246
2024-03-20 16:59:04 +01:00
l_samenv
ea8570d422 wip: fix attocube 2024-03-20 16:12:03 +01:00
1169e0cd09 improve sea interface
Change-Id: I58fb4b10ef9466f90e4cd58b6c67bcfb11c493e3
2024-03-08 15:59:16 +01:00
7d02498b3d improve async behaviour of parmod.Driv
Change-Id: I3889614a0deaba4ef13b86c6600b6f96bc502a39
2024-03-08 15:58:17 +01:00
694b121c01 fix more stop doc strings
Change-Id: Id7ea0a6d0c959e980beee8fbea73932c701977d7
2024-03-08 15:38:34 +01:00
0f50de9a7f fix command doc string handling and change default stop doc string
- fix inheritance of command description
- when no stop method is given, then the description should indicate
  that stop is a no-op -> add missing doc strings to stop methods
- add test to make sure stop command doc strings are given
  when implemented

Change-Id: If891359350e8dcdec39a706841d61d4f8ec8926f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33266
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:34:08 +01:00
b454f47a12 fix docstring in frappy.error.OutOfRangeError
Change-Id: I006c061a5d88ac7c97808efd56faece927916e78
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33183
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:34:02 +01:00
6e7be6b4c7 simplify callbacks
on Module, use one single callback list 'paramsCallback' instead of
'valueCallbacks', 'errorCallbacks'. Redesign the mechanism to
avoid most of the closures.

Change-Id: Ie7f68f6bf97ab3f3cd961faa20b0e77730e5b37d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33118
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-03-08 15:33:52 +01:00
af28511403 fixes for proxy modules
- for the case when the remote module name does not match,
  'read', 'change' and 'do' does not work
- a proxy to an IO class has enablePoll == False, but it needs
  a triggerPoll for modules relying on it to work
- a proxy on a communicator module has a status even when the
  remote does not - this needs 2 fixes

Change-Id: Icd44da4c2984f27ce7147dec633739f9176012ec
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33168
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:33:45 +01:00
9d9d31693b bugfix in automatic creation if attached io
srv.modules does no longer exist

Change-Id: Ibc52fe35f27ad110e60947702d97ee40f359b7c5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33167
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-03-08 15:33:39 +01:00
3a7fff713d move StructParam to frappy/extparams.py
+ typos and fixes in doc strings

Change-Id: Ib3e9add84ce2a6fb5c33770cae7f2da3f5655506
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/33033
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-26 13:43:10 +01:00
2acab33faa add FloatEnumParam
for the use case where a parameter is a selection of discrete
float parameters

declaring a parameter as FloatEnumParam will create effectively
two parameters, one with datatype FloatRange and another with
datatype Enum, influencing each other automatically.

in a later change StructParam should be moved from
frappy/structparam.py to frappy/extparams.py

Change-Id: Ica3fd8dcaf6e9439e8178390f220dec15e52cc86
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32975
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-26 13:43:10 +01:00
8c589cc138 simulation: extra_params might be a list
- still accept comma separated string
- remove legacy naming '.extra_params'

Change-Id: I497cf7722d0b39dd31c516383449a4cc4e7dcb7d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32968
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-26 13:43:10 +01:00
l_samenv
2b42e3fa0a flamesample: improve comments to parmod.SwitchDriv 2024-02-23 10:13:31 +01:00
l_samenv
5b0da3ba98 fixes on 2023-11-27
- ls372 autorange: wait one sec. more for switching
- keep only one channel, even after target is reached
- intermediate target only when T is raise, but not when lowered
2024-02-23 10:13:05 +01:00
l_samenv
c80b4ac5fb fixes for flamesample
- fixes in SwitchDrive
- increase range when reading is zero in autorange
- add debugging log msgs
2024-02-23 10:10:38 +01:00
l_samenv
8cb9154bb5 flamesample: use odd fraction for limits
workaround for problems when driving exactly to the limit
2024-02-23 10:10:29 +01:00
l_samenv
813d1b76ef remove 1K plate heater configuration
this heater does not exist
2024-02-19 12:47:52 +01:00
Alexander Zaft
183709b7ce frappy_mlz seop: add count to ampl and phase cmds
Change-Id: Id7faca31269bb481ec4010f1e0aec2591f0299d6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32030
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-02-02 14:25:27 +01:00
2cdf1fc58e fix import order in entangle.py
import order

Change-Id: I54450bb64cb5cbea3d29072b6095b8b9e3962aa6
2024-02-02 14:21:44 +01:00
ffaa9c83bd introduce FrozenParam
For the case when the readback of a parameter does not reflect the
change immediately.

May also be used on Writable.target or Drivable.target with a short
BUSY period.

+ bug fix in an error message in frappy.datatypes.IntRange

Change-Id: I5e1c871629f9e3940ae80f35cb6307f404202b4a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31981
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-02-02 14:11:25 +01:00
f9a0fdf7e4 add frappy_psi/calcurve.py and calibtest.py
Change-Id: I5b9aae0ac3bcd76d846c08717201e6c32df4b675
2024-01-31 17:09:17 +01:00
7dfb2ff4e3 logdif.py: only one commit needs to be new enough
+ fixe intendation

Change-Id: I4b0c393767925532e1f105e80a215839a02214af
2024-01-29 15:48:43 +01:00
84c0017c03 synced most of wip to mlz
Change-Id: Ifc5eb0d8ccf693535ab474553759f5622b3a3c8f
2024-01-29 14:31:13 +01:00
2126956160 adopt missing changes while cherry-picking from mlz
Change-Id: Icda4d581e8f0ebd22fc22f2661965bf98a821a34
2024-01-29 14:29:23 +01:00
4cdd3b0709 remove more coding cookies
mainly from frappy_psi

Change-Id: I192811459aebe97f3076888cd31a308a51e6aa49
2024-01-29 14:14:09 +01:00
Alexander Zaft
15d38d7cc1 all: remove coding cookies
Change-Id: I53a4d79c3ebc50b8aed43a5ef1fa6538f8059a47
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32251
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 14:06:06 +01:00
Jenkins system
9904d31f0b [deb] Release v0.18.1 2024-01-29 13:51:25 +01:00
Alexander Zaft
b07d2ae8a3 mlz: entangle fix limit check
Change-Id: Ib430262057026054ac71053d25dfda340b48227a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32921
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-01-29 13:51:20 +01:00
Alexander Zaft
7d7cb02f17 mlz: Zapf fix unit handling and small errors
Change-Id: Iaa5ed175582d8399cc0c69ba72c3ab8e6e51ecf6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32920
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2024-01-29 13:51:15 +01:00
Jenkins system
1017925ca0 [deb] Release v0.18.0 2024-01-29 13:51:10 +01:00
bb14d02884 bug fix in frappy.io.BytesIO.checkHWIdent
missing f for f string

Change-Id: Ie67384e5b7e514728041a72bd08c850abb31639e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32786
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:51:04 +01:00
4c499cf048 remove py35 compatibility code
as f-strings are heavily used now, compatibility to py35
can be removed

Change-Id: I1ae4912ad4cbde8419b74845217943bd061053f3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32754
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:50:50 +01:00
e403396941 fix playground after change 32249
as modules are now stored on secnode instead of dispatcher

Change-Id: Iccda3d97269693a893c06a4e094a9c1dbcf7df0b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32746
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:50:00 +01:00
5b42df4a5e frappy.secnode: fix strange error message
when get_module_instance is called a second time after
it failed, the 'cls' element in opts is missing:

move opts dict copy from create_modules to get_module_instance

Change-Id: Ie046f133a8fdbbb1c39643ca16dc5447a9d2d065
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32745
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:55 +01:00
841ef224f6 modify arguments of Dispatcher.announce_update
- 'pname' argument is not needed
- change 'modulename' argument to 'moduleobj'
  (needed for further change)

Change-Id: Ib21f8ad06d9b2be4005ff3513088a85e29785c94
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32744
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:39 +01:00
8142ba746d fix missing import in change message
Transported values in a change must be converted first.
As this is only relevant for the exotic "scaled" and "blob"
datatypes, this was not detected yet.

- add tests
- suppress warning PytestUnhandledThreadExceptionWarning in tests
+ change import_value methods to raise no other exceptions than
  WrongTypeError and RangeError
+ simplify Command.do: as import_value already raises the
  appropriate error, no more try/except is needed

Change-Id: I299e511468dc0fcecff4c20cf8a917da38b70786
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32743
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:30 +01:00
Alexander Zaft
5358412b7a core: better error on export of internal type
more descriptive error when trying to export OrType, NoneOr, ValueType
and DataTypeType

Change-Id: If13815e9d2b177042b24a1bb62b1ad1d1d88b502
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32737
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:49:21 +01:00
010f0747e1 frappy_psi.sea: workaround for bug in sea
hdb path should not contain duble slash. replace double slash
by single slash

Change-Id: Ia2ce3be9a75d68fcc7efe3eb3dbd19a7907a73ff
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32705
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:49:08 +01:00
Alexander Zaft
047c52b5a5 core: better command handling
* check argument of do
* automatically set optional struct members from function signature

Change-Id: I95684f1826c1318ea92fad2bd4c9681d85ea72f5
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32501
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:48:37 +01:00
Alexander Zaft
f846c5cb31 datatypes: fix optional struct export
Change-Id: Ia2758dfba75f36a91bf1676e8ead555cec3ead53
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32500
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:47:18 +01:00
Alexander Zaft
0e4a427bc3 mlz: handle unconfigured abslimits
- if there are no abslimits configured, get them from the hardware.
- check if the ranges are compatible

Change-Id: If72e31a56c299cb628ed8ff66d4340a87d4bd1d4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32625
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:47:09 +01:00
Alexander Zaft
2d8b609a3c core: formatting and update server docstring
Change-Id: Ic0dd4c5239f27679c89f6b3742b9c5f8b71f33f6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32514
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2024-01-29 13:47:00 +01:00
Alexander Zaft
6e3865b345 core: allow multiple interfaces
Change-Id: Ib8c0baef85a6dd69cddafe1c4973e42136d1588b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32489
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-01-29 13:46:47 +01:00
0004dc7620 implement pfeiffer TPG vacuum reading
this is an example where StringIO.communicate has to be extended

Change-Id: Iff6bb426ee7960904993574531de84793152e21d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32385
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:36:18 +01:00
158477792f add StringIO.writeline, improve StringIO.multicomm
- StringIO.writeline sends a command and does not expect a reply
- StringIO.multicomm and BytesIO.multicomm is improved in order
  to insert individual delays in between lines and individual
  noreply flags

+ fix a bug in tutorial_t_control
+ improve readability of frappy.lib.classdoc.indent_description

Change-Id: I9dea113e19147684ec41aca5267a79816bbf202c
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32267
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:34:45 +01:00
fd0e762d18 doc: drop latex support, add pdf support
latexpdf fails with error message "Too deply nested".
We want to avoid reducing the nesting level of doc strings
in frappy.lib.classdoc (less nice output) or a level of
nesting in method doc strings.

- latex removed from Jenkinsfile
- added support for rst2pdf

Change-Id: Ieb3355ef506e636e7e43a726c68327e3b1154469
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32406
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2024-01-29 13:34:39 +01:00
Alexander Zaft
a16ec6cc91 mlz/demo: move old examples to Attached
change very early version of module attachments in GarfieldMagnet and
MagnetigField to use Attached

Change-Id: I616ad17bc72cd93d86e1b3e3609543cfe90edcd8
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32250
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-01-29 13:34:29 +01:00
Alexander Zaft
777a2cb6a9 core: move module handling out of dispatcher
Split module handling code from the dispatcher.
The new class for managing Modules is called SecNode.

* change logging to no longer need a reference to modobj
* modules get a reference to the secnode obj instead of the
  dispatcher
* intermediate usage fixes for frappy_psi/sea

Change-Id: Ifee4bb47aa7a4508bb4a47c9a5873b7e2d5faf67
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32249
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2024-01-29 13:33:47 +01:00
cb3e98f86d added logdif.py
a tool the compare commits in branches

Change-Id: I503941b76bb567ea4c3d33b986406a910154fda6
2024-01-29 12:58:45 +01:00
a8bafde64e add test cfg for lockin 7270
Change-Id: Ic6d66b625feb44e8130266901f1296adcb11f532
2024-01-29 10:58:21 +01:00
36c512d50b frappy_psi/SR.py: got changes from develop branch
+ move soft auto range from read_value to doPoll

Change-Id: I0bf8ac15f8515e55cd9131be33615908ffc99c12
2024-01-29 10:29:33 +01:00
Oksana Shliakhtun
17b7a01ce1 Driver for ThermoHaake Phoenix P1 Circulator
Change-Id: I0573eeac2e40b4715072661c819701186733bf94
2024-01-29 10:29:33 +01:00
be66faa591 frappy_psi/thermofisher: version through gerrit
Change-Id: I6999e84d1c5efd0625c6df89e97dad46e5a8cd59
2024-01-29 10:29:33 +01:00
e27b4f72b5 newset version of oksanas drivers
Change-Id: Ia6d8b727e48e96a14b75feeef5d3e6c002cb82a0
2024-01-29 10:29:33 +01:00
l_samenv
bc7922f5c8 iono pi max demo (drums)
+ fix spacing in ionopimax.py
2024-01-25 09:40:10 +01:00
l_samenv
99a58933ec ionopimax: Add LogVoltageInput 2024-01-18 08:40:33 +01:00
9e000528d2 add vacuum furnace cfg file 2024-01-11 16:33:06 +01:00
4a2ce62dd8 added drivers for small furnace 2024-01-11 16:28:06 +01:00
9e6699dd1e more robust calculation for heater resistivity
and check is is in the allowed range 10 .. 100 Ohm

Change-Id: If485480c0974d953165c37f7354dc2818f68b30b
2023-12-15 16:00:26 +01:00
Oksana Shliakhtun
416cdd5a88 Autogain function for SR830 lock-in driver
Change-Id: If07ec9182e5153e1237b9818ce555162f54e0ae5
2023-12-11 08:31:43 +01:00
Oksana Shliakhtun
1bd188e326 For the lockin830 get_par/set_par are implemented.
Change-Id: I5b6707a07d936d24528173a2edae49a148081ff9
2023-12-11 08:31:36 +01:00
Oksana Shliakhtun
f7b29ee959 SR830: moved dicts out of class
Change-Id: If056b1bf4e81c3b609ded087dff2b40c7119903f
2023-12-11 08:31:29 +01:00
Oksana Shliakhtun
f6a0ccb38b Changed write_range, write_tc methods
Change-Id: I335f97bd54deaccf0552b27deb3a7dfe73074e4c
2023-12-11 08:31:17 +01:00
Oksana Shliakhtun
b93a0cd87b New driver for lock-in amplifier SR830
Change-Id: I45c5a06460f4b84cade0eae53188b058510c4473
2023-12-11 08:31:11 +01:00
be6ba73c89 workaround for bug in sea
fix double slash in hdb path

Change-Id: I68ab79c5240abb9fcccbbe5f817f740df2bb5ea6
2023-12-05 14:10:03 +01:00
c075738584 ips_mercury: add NOT_FOUND action 2023-12-04 15:47:18 +01:00
0fa2e8332d do not complain when no output module is configured 2023-12-04 15:46:50 +01:00
afb49199a1 fixes in mb11/dil5 cfg files
- add flowpars
- increase om range to -360
- add sea config
2023-12-04 15:45:00 +01:00
416fe6ddc0 frappy.client: fix the case then timestamp is missing
the previous version failed when timestamp was missing

Change-Id: I77e1fb81b19fb4ee2749d731bafacbac46132f8e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32404
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-11-30 09:17:11 +01:00
e3cb5d2e60 frappy.io: change default to retry_first_idn=True
Looked at this code again, and wondered why the default is not True.
It is far more probable that the programmer just forgets to set
this property to True than it would harm to do so.

Change-Id: I439aedbdfc9c2b12737e3ce1694e90550ddf0e78
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32270
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-11-30 09:16:57 +01:00
l_samenv
998367a727 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-11-23 15:57:17 +01:00
l_samenv
ab918a33ae cc: replace bool by enum in cc.hav and cc.nav 2023-11-23 15:56:23 +01:00
l_samenv
397ec2efbd add pdld laser driver
2 modules: a switch (on/off) and the power (set: target, readback:value)
2023-11-14 09:17:11 +01:00
67032ff59b ma6: set backlash 2023-10-27 15:11:19 +02:00
03c356590b frappy_psi.phytron: implement limit switches 2023-10-02 16:58:09 +02:00
06bec41ed3 ma6: make ts drivable 2023-10-02 16:56:23 +02:00
4cd6929d4b fix ma15 sea config 2023-10-02 16:55:42 +02:00
a89f7a3c44 configs for sample heat stick 2023-10-02 16:54:52 +02:00
a4330081b7 proxy: fix command wrapper
bugfix: return only value of execCommand result, not qualifiers
Change-Id: Iff14779050daa9886e9f7d0396317c5a41695cd1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32235
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-10-02 13:49:08 +02:00
3b997d7d86 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-22 13:29:23 +02:00
612295d360 add ill2 2023-09-22 13:29:04 +02:00
9e39a43193 fix fs config 2023-09-22 13:27:54 +02:00
6adfafaa27 more consistent ori1 stick json file 2023-09-22 13:27:10 +02:00
f6c4090b96 fix simulation
+ some fixed in sim_uniax

Change-Id: Ia8703ed988aa904bb2694339f0d3175b28fcb33e
2023-09-19 16:05:52 +02:00
ecef2b8974 more cfg file fixes
Change-Id: I0ba86cd17bb07f480cac6f20994ee854c6e811ae
2023-09-19 15:04:02 +02:00
l_samenv
96a7e2109b cleanup cfg files 2023-09-19 14:43:48 +02:00
l_samenv
2f3c68a5c5 improvements for flame
- frappy_psi.channelswitcher: use isBusy instead of checking value and target
- frappy_psi.ls372: remove underflow mechanism
- frappy_psi.parmod.SwitchDriv: switch the controlled module also when not buys
2023-09-19 14:17:08 +02:00
l_samenv
e9a195d61e flamedil as of 2023-07-04 2023-09-19 14:17:08 +02:00
l_samenv
6ac3938b78 flamedil as of 2023-07-03 2023-09-19 14:17:08 +02:00
l_samenv
b4cfdcfc1a flame sample combined T 2023-09-19 14:16:21 +02:00
l_samenv
d32fb647a6 frappy_psi.ls372: add TemperatureSensor and TemperatureLoop 2023-09-19 14:14:12 +02:00
l_samenv
abf7859fd6 frappy_psi.cryoltd: fixes after frappy upgrade 2023-09-19 14:14:12 +02:00
l_samenv
55ea2b8cc4 frappy_psi.triton: try to fix channel selection before condense action 2023-09-19 14:14:12 +02:00
27600e3ddf fix bad cfg files
Change-Id: Iacba12a2679777dd4ea2892751d82a63221b1361
2023-09-19 14:07:20 +02:00
l_samenv
6b4244f071 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-09-19 11:01:06 +02:00
1d81fc6fcd frappy_psi.sea: small fixes
- changes in return value of frappy_config command in sea
- do not store sea manager

Change-Id: I5bc1d9a281ad2285b90d3649b4c702a3501d451d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32166
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-19 10:58:07 +02:00
dfce0bdfbc phytron.py: improve status
better analysis of hardware status code

Change-Id: I667b443649db43ff3e572e0a50685aabc9ba2ca2
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32165
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-19 10:57:59 +02:00
c39aef10aa Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-14 11:10:12 +02:00
45dd87060b improve client shutdown time
in SecopClient.disconnect joinng the reconnect thread may take
up to 10 s, because of the time.sleep(10) call in the reconnect
thread.

change the _shutdown attribute from bool to an Event, and
use Event.wait instead of time.sleep

Change-Id: Icea6a14ad73df0b3d26ef45806f4c05e6bf18492
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32137
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:10:39 +02:00
8019b359c4 change FloatRange arguments minval/maxval to min/max
in the previous version FloatRange(max=100) was neither working
properly nor complaining, because the maxval=None default was
overriding the value for max.

possible fixes:
  - raise an error when min/max used as argument (confusing for
    the programmer, as it is a property)
  - allow both versions minval/maxval and min/max (more code)
  - use min/max and a pylint directive here (the only thing to
    take care is not to use the min/max builtin in __init__)

this change uses the last option for the fix

Change-Id: Iff0e0c4d0d7b165003bdeffa67a93a1cd7f29eea
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31982
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:09:25 +02:00
4c5109e5a3 fix frappy_demo.lakeshore
reading back the target does not work properly, because
  a) the readback value might be delayed
  b) there is no command to read back the target, SETP?1
     is returning the working setpoint, which might be distinct
     in case of a ramp

Change-Id: I0da2dbfc1a8ddbecbae6d0456ff64e008bc56336
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31983
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:09:09 +02:00
bf4b3e5683 psi: improve sea interface
- get return value from teh frappy-config script in order
  to detect failures
- call config_check not more than once within 1 sec

Change-Id: Ibe42e846521206463f2761d452aea7e558a36854
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32139
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:09:00 +02:00
af34fef1e1 fix missing .poll attribute in simulation
using super() in SimBase.__new__ fixes the problem

Change-Id: I18d0ba6ac476c2edb0d973090bcb09508a983d6a
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32136
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:08:50 +02:00
5e1c22ba28 further fixes after change 31470
- get_module is to be called when io is autocreated
- register_module is missing in playground

Change-Id: I28884575b71320667107c494473b0fc5d4363a50
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32123
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-14 09:08:36 +02:00
0bc4a63aa7 add parmod.Par
the reasonly class frappy_psi.parmod.Par represents a parameter
or a component of a tuple parameter

Change-Id: I47208c9d7a6fc377cd56b82cc6a9e8cdb433fe8e
2023-09-14 09:05:00 +02:00
cb2c10655c improve shutdown time
on shutdown, time.sleep(10) is blocking the reconnect thread.
change the _shutdown attribute from bool to an Event, and
use Event.wait instead of time.sleep

Change-Id: Icea6a14ad73df0b3d26ef45806f4c05e6bf18492
2023-09-13 17:22:58 +02:00
6c49abea74 fix frappy/playground.py after change 31470
assumptions about dispatcher in playground.py are no longer
valid.

- let Dispatcher class in playground inherit from real dispatcher
+ improve log messages

Change-Id: I2a9a9d532dabadc590543660c445c021dd2f2891
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31967
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-09-11 14:12:14 +02:00
dee8f8929e Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-08 10:46:13 +02:00
2e143963df stickmotor addon: add backlash -1 2023-09-08 10:45:18 +02:00
4bc82c2896 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-09-06 08:39:22 +02:00
833a68db51 ma10: improve sea cfg 2023-09-06 08:38:49 +02:00
b9f046a665 hvolt_short stick: make hcp writable 2023-09-06 08:38:06 +02:00
9d9b5b2694 frappy_psi.phytron: further improvements
unfortunaely, sometimes communication errors happen.
workaround: try several times reading the status

Change-Id: I2788c6c9b4145246cdd51c31b246abffee60f93b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32032
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-28 14:17:26 +02:00
255adbf8d9 frappy_psi.phytron: further improvements
unfortunaely, sometimes communication errors happen.
workaround: try several times reading the status

Change-Id: I2788c6c9b4145246cdd51c31b246abffee60f93b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/32032
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-25 08:21:16 +02:00
Alexander Zaft
bc0133f55a add zapf to requirements-dev
Change-Id: I6dddd8d4c590253f1039b89edae561fa90b40811
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31725
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
09e59b93d8 Revert "add zapf to requirements-dev.txt"
This reverts commit e67a46cd015c0a1a32d5a4f114b963dd17a7c266.

Reason for revert: required version available from pypi

Change-Id: Ib4f8b0cf62da58e84545511c7521ea93b7ff1342
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31724
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
2474dc5e72 interactive client: improve keyboard interrupt
- when driving a module with <module>(<target>),
  keyboard interrupt should send stop()

- make sure keyboard interrupt does not only stop
  the current driving, but also skips other code
  on the same command line

Change-Id: Ib4d2c4111dc0f23bf07385065766fb9b4a611454
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31926
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-18 16:32:16 +02:00
Alexander Zaft
9dab41441f frappy_mlz: Add Zapf PLC
adds a zapf-based PLC connection scanner.

Change-Id: Icc0ded7e7a8cc5a83d7527d9b26b37c49e9b8674
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31471
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
4af46a0ea2 add zapf to requirements-dev.txt
Change-Id: Ia4de696051cee1e00676e777b7dd2c0a90a0c504
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31719
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
b844b83352 core: do not call register_module on error
Dispatcher.get_module_instance returns None on failure.
If that is the case, the dispatcher should not try to register the
None value as a module.

Change-Id: Ie33b8debc2a829d480d56cafc1eb0ab610181d67
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31713
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
3b63e32395 frappy_mlz: fix one-off error in barcode reader
cut of one byte too much in barcode decode

Change-Id: I5f1f8475f197b13af836d685dc6da5a9ee824dc2
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31728
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
5168e0133d dispatcher: change logging calls to debug
Some logging calls should not have landed as log.info in the dynamic
modules patch. This fixes that.

Change-Id: I666fc7c9b5c65ddbed1c26ea456becce7870e744
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31707
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
9ea6082ed8 frappy_mlz: Zebra fixes after basic test
Some fixes after the device was tested with socat ptys and NICOS.

Change-Id: I3e9dba2be2547d493c435d1da9844c932a2df4e6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31662
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
Alexander Zaft
f205cf76aa mlz: Add Zebra Barcode Reader
Adds a Barcode reader device (for now, only for ANTARES). Not yet
tested with real hardware.

Change-Id: I25f097466be89d152f47b9d05ece8f562e4b34d6
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31412
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-08-18 16:32:16 +02:00
db9ce02028 Revert "revert commits done before MZ holidays"
This reverts commit d2885bdd72331b60b5a6f26e0c52683d110406b5.
2023-08-18 16:32:16 +02:00
dmc
c4a39306e4 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-08-17 14:10:29 +02:00
dmc
024de0bd32 insert pressure reading into ccrpe_cfg 2023-08-17 14:07:44 +02:00
d2d63c47e1 frappy_psi.phytron: stop motor before restart
restarting the phytron motor without prior stop leads
to funny behaviour.

- send stop before restart
- stop motor when moving but status not busy
- restart when motor drives the wrong way

+ better status text when stopping

Change-Id: I82cd59297b3c79a354a4eeb5ba03fc65bedf755f
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31929
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-14 14:32:01 +02:00
565e8e6fd3 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-08-10 14:35:03 +02:00
89bc7f6dfe add ori7 2023-08-10 14:34:51 +02:00
c69fe1571a add hvolt_short 2023-08-09 17:39:19 +02:00
c40033a816 update old cfg files
- change secop_psi to frappy_psi
- remove interface and name in Node

Change-Id: I69242de250c9ecf52e001fce6396347dbf3fedcb
2023-08-09 17:36:02 +02:00
da37175cbb frappy/protocol/interface/tcp.py: use SECoP_DEFAULT_PORT
import SECoP_DEFAULT_PORT instead of defining DEF_PORT

Change-Id: I02ee420d200f90b61f8c79e1cb5ee3e0913955e9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31913
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-07 16:15:30 +02:00
2020928289 improve error message on client when host/port is bad
for host name without port, None was used for the port
leading to a confusing error message

- do not call parse_host_port with None as defaultport argument
- improve error message when connection fails

+ fix an error in last line of parse_ipv6_host_and_port
+ fix some issues breaking PEP 8 rules

Change-Id: I437360be96449c164f0080e3c60f1685825d4780
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31911
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-08-07 16:15:30 +02:00
9df6794678 fix haake_cfg 2023-08-07 16:10:55 +02:00
41f3b7526e fix ma7.config.json 2023-08-07 16:10:30 +02:00
l_samenv
f80624b48d MA7: add unit=T to mf 2023-07-11 15:36:14 +02:00
l_samenv
9e2e6074c8 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-07-11 13:27:57 +02:00
5a13888498 sMA6 encoder mode to CHECK
after Oksana experienced that it works
2023-07-11 11:27:20 +02:00
5a8a6b88ff frappy.client.interactive: bug fixes
- correct behaviour with the following untypical message sequence:
  - send change target
  - receive status idle
  - receive status busy
  - receive changed target

- add 'exception' to Logger

Change-Id: I614b2a2c2e09ef1b43544838ccb2fa43357dd50d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31632
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-11 10:59:42 +02:00
b84b7964e3 frappy_psi.sea: further bug fixes
- in SEA, it is not guaranteed that the is_running state is set
  before the run command returns. as a consequence, we have to
  wait in SeaDrivable.write_target for is_running being set
- syncio has always to be reconnected after asynio

Change-Id: Ia46cff11de86868ce0627faaf6f776282bd7a8f4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31631
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-11 10:59:42 +02:00
l_samenv
6c5dddc449 ma7: sea confg: make ta/tb visible 2023-07-10 10:55:43 +02:00
78fa49ef74 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-07-07 15:46:05 +02:00
d92b154292 frappy_psi.sea: avoid multiple connections
the _connect was sometimes started in parallel from
startModules and the first call to doPoll.
remove the first one, and protect the second one
with a lock

Change-Id: I079439e150efd5d005130cef475f6326f933ecbd
2023-07-07 15:40:20 +02:00
073fe1a08b frappy.io: make error reporting consistent
- fix mechanism to avoid multiple error messages in log files

Change-Id: I688071f9b06da1a81eb12d63adb549042171c7c8
2023-07-07 15:40:20 +02:00
f80c793cd9 consmetic changes to ma6_sample_heat_cfg.py 2023-07-06 14:49:06 +02:00
519e9e2ed7 MA6: set om.encoder_mode to 'NO' 2023-07-06 14:48:09 +02:00
14036160f7 add special configurations m6/ma7 sampleheat 2023-07-06 13:06:06 +02:00
131dc60807 MA7/MA11: make ts drivable 2023-07-06 13:04:36 +02:00
49722a858f update haake + eurotherm cfg 2023-07-06 13:04:11 +02:00
c61b674382 disable encoder for MA11 stick rotation 2023-07-06 12:57:07 +02:00
091543be56 add FW (old power rack, via SEA) 2023-07-06 12:53:19 +02:00
d2885bdd72 revert commits done before MZ holidays
they are all not neccessary for SINQ SE operation

Change-Id: Ic9adcccf685752ab90bb6b86005ac8e04b302855
2023-07-06 08:03:15 +02:00
975593dd6b update to gerrit version
Change-Id: Ifdaa28dd961a529cd9197c4c3639744f108b0a6a
2023-07-05 17:33:05 +02:00
Alexander Zaft
4fe28363d3 server: add option to dynamically create devices
add module which scans a connection and registers new devices depending
on the answer.
* change module initialization to demand-based
* move code from server to dispatcher
- remove intermediate step in Attached __get__

TODO:
  factor out dispatcher (regards to playground)
  discuss factoring out of module creation code from server AND
  dispatcher

Change-Id: I7af959b99a84c291c526aac067a4e2bf3cd741d4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31470
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-07-05 17:16:41 +02:00
28b19dbf57 frappy_psi.thermofisher: add version through gerrit
Change-Id: I4b89d6ec803ad64c41720bc62493d2e4027df50e
2023-07-05 17:14:07 +02:00
05189d094a add StructParam
adds a generic solution for creating parameters with struct datatype
with their members linked to individual parameters.

main use case: ctrlpars

read_*/write_* methods are either created for the main (structed)
parameter based on the corresponding methods of the individual
parameters or the methods for the individual parameters are created
based on the methods of the main parameter

+ disable pylint use-dict-literal

Change-Id: I7f1d9fb3d3b2226b548c2999bbfebe2ba5ac285e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31405
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-05 17:12:12 +02:00
47da14eef9 pylint: disable use-dict-literal
sometimes it is nicer to use dict(...) instead of {}
an objections against removing this check from pylint?

Change-Id: Ib08d3016b7ec3512111021a82685253cdcd42916
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31505
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-05 17:11:40 +02:00
Alexander Zaft
7904f243cb server: add option to dynamically create devices
add module which scans a connection and registers new devices depending
on the answer.
* change module initialization to demand-based
* move code from server to dispatcher
- remove intermediate step in Attached __get__

TODO:
  factor out dispatcher (regards to playground)
  discuss factoring out of module creation code from server AND
  dispatcher

Change-Id: I7af959b99a84c291c526aac067a4e2bf3cd741d4
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31470
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-07-05 17:10:56 +02:00
a2fed8df03 pylint: disable use-dict-literal
sometimes it is nicer to use dict(...) instead of {}
an objections against removing this check from pylint?

Change-Id: Ib08d3016b7ec3512111021a82685253cdcd42916
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31505
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-07-05 17:08:48 +02:00
19f965bced Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-07-03 17:51:43 +02:00
3e4ea2515e add ma15 cfg 2023-07-03 17:51:28 +02:00
714c820115 fixes in ori3 and dil5 config 2023-07-03 17:49:06 +02:00
a8e1d0e1e8 frappy_psi.sea: try to reconnect on failure
both .asynio and .syncio connection should be tried to reopen.
(fix from mlz gerrit)

Change-Id: I0da5bd9927865a1c55afb93a7a5b76c44fc8750e
2023-06-29 11:28:04 +02:00
l_samenv
d7a1604bd5 frappy_psi.sea: auto connect
on both .ssynio and /syncio try to reconnect after failure
2023-06-26 14:45:53 +02:00
b92095974b camea filter addon
Change-Id: I1d80aa3bfc4e441ad8a69930b81d6cc25cee9511
2023-06-20 11:05:15 +02:00
Alexander Zaft
8dc9c57e9d entangle: fix tango guards for pytango 9.3
Change-Id: I666969f9c798971d5cd8a0c2f6564067ac3cde72
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31327
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
2023-06-20 09:00:42 +02:00
Alexander Zaft
7c95f1f8ee config: fix merge_modules
Change-Id: I31d05afe300443e08fb08f9e6645401f52cfae39
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31323
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-06-20 08:05:55 +02:00
3786d2f209 frappy_psi.triton: fix HeaterOutput.limit
+ fix handling of control_active

Change-Id: Ic11933f6c1c4d9df07aa9d06ae4dca40b755e4ed
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31377
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
138b84e84c add a hook for reads to be done initially
inital reads from HW should be done in the thread started by
startModule, not in startModule itself.

- add a hook method 'initialReads' for this
+ add doc for init methods
+ fix some errors in doc

Change-Id: I914e3b7ee05050eea1ee8aff3461030adf08a461
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31374
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
997e8e26e9 frappy_psi.mercury: proper handling of control_active
Change-Id: I31e846fa6fdf6d642184e3736a66ffd53033bccf
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31376
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
644d005dad frappy.mixins.HasOutputModule
add 'set_control_active' method for overriding by subclasses

Change-Id: Ib344319862a4a0bf29efef16a63db09d1f314a82
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31375
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
36dfe968e8 frappy_psi.phytron: rename reset_error to clear_errors
use the command 'clear_errors' to return from an error state

+ make sure target is valid after clear_errors

Change-Id: I3c180500a05836d52bbb9a8ecbdb397adea03d0d
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31337
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
0932228596 frappy_psi.mercury/triton: add control_off command
frappy_psi.triton.TemperatureLoop has not output module to
deactivate control -> add control_off also to loops in
frappy_psi.mercury

Change-Id: I4dc4333134da34a8d3ae0f3c037a1e5b108c95a1
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31341
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-20 08:03:37 +02:00
Alexander Zaft
dff0c819de io: followup fix for retry-first-ident
followup fix: no error was raised ever for the first identification
message.

Change-Id: I80f0f431add6dfd7b37d750b9fc661174aa8f217
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31318
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Georg Brandl <g.brandl@fz-juelich.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-06-20 08:02:13 +02:00
Alexander Zaft
fd917724d8 io: add option to retry first ident request
Change-Id: I524c15387eaf2461e3dfe690250a55f058467b0b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31291
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Bjoern Pedersen <bjoern.pedersen@frm2.tum.de>
Reviewed-by: Alexander Zaft <a.zaft@fz-juelich.de>
2023-06-20 08:02:02 +02:00
bf43858031 GUI bugfix: use isChecked instead of checkState in BoolInput
Change-Id: I4896df13c117c6eeaaaaba80ca3da4b1982c3d9b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31346
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-06-16 11:09:27 +02:00
f354b19cf0 frappy_psi.sea: fix extra_module_set
Change-Id: If5669fdd60c8505a47414f17cfcd8534cdc2abee
2023-06-06 16:50:48 +02:00
f304ac019e fix cfg files (extra_modules/single_module)
Change-Id: I1821e1e0dc960d48a3e343c53195808798b7f969
2023-06-06 16:49:54 +02:00
9a9a22588f Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-06-06 16:46:31 +02:00
3e26dd49d0 jtccr: fix cfg for extra_modules / single_module 2023-06-06 16:45:31 +02:00
5a456a82b0 fix enum when SEA type is text
Change-Id: I873045a2dac8771b844431ccda70ce1b8ff1aee5
2023-06-05 13:56:00 +02:00
f6868da3b9 fix systemd bug
Change-Id: I8a3f1eddba9525589757d4612a5060267ea0c5db
2023-06-05 13:56:00 +02:00
ee31f8fb45 fix merge_status in HasConvergence 2023-06-05 13:03:38 +02:00
a6a3f80e30 remove sign=-1 from cfg files 2023-06-05 13:02:40 +02:00
ad36ab1067 frappy_psi.thermofisher improvements
- merge Loop with Sensor
- make convergence work

Change-Id: Iba0cafc524ada6d490b7a5c30f4127e77fd163f3
2023-06-05 09:50:35 +02:00
f2d795cfba frappy_psi.convergence: improvments
- merge_status
- empty string instead of 'approaching'
- dif <= tol

Change-Id: I6f10875f7ef5d2109c13d7448ede114b8e30d86e
2023-06-05 09:47:08 +02:00
c04337c3a4 frappy.client: missing exception method in dummy logger
Change-Id: Ie3a574c3060f2ac6833ff44e8074a19db6ea2f0b
2023-06-05 09:45:04 +02:00
57d5298c92 remove secop-server.spec
Change-Id: I8097a2918bc4e786bd270aeb436efebe9a3bd88f
2023-05-31 14:32:04 +02:00
9a6421a54f up to date with develop/mlz
Change-Id: I5ea71bc99a2f0dffc3dbe37e1119eb188ef8a3f0
2023-05-31 14:27:36 +02:00
c5d429346d update 2023-05-30 from gitmlz
Change-Id: I0b1eb2941692fde5c9d98f107fc38315625dcfdb
2023-05-31 14:16:12 +02:00
726665ebd8 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-05-31 08:43:19 +02:00
004533655f frappy_psi.magfield: bug in progress check
must check for self.current (not self.value)

+ fix in mercury: __ramping must be initialized
2023-05-31 08:42:17 +02:00
c4d5d2e284 fix equipment_id in seadesc
Change-Id: Iecf5d3ae815373c0535ee9e1c230b2f48554f5b5
2023-05-30 15:12:36 +02:00
75f156beef improve HasRamp
Change-Id: I0ddabb8b2681712637a18c392da5424d30a05b4b
2023-05-26 16:07:07 +02:00
459a80b4d2 add Drivable with alias value and target
together wih mixins HasConvergence and HasRamp

Change-Id: Ia36a8b44220e93cfeee98400f4276bfd7e40d82f
2023-05-25 17:54:28 +02:00
bef190b77d software ramp mixin
+ fix frappy.lib.merge_status

Change-Id: I550eaeaab460a0d9ac1b027d59d4223dac4c0663
2023-05-25 17:53:36 +02:00
e4dbb90065 lakshore must not import from frappy_psi.mixins
Change-Id: I988bef545f98d5c42d56af3fe4d5aae6dbf19809
2023-05-25 17:52:27 +02:00
0cbaffd4b6 log.exception instead of log.error in callbacks
+ inhibit timestamps in future

Change-Id: Idef463558bf24e891573179474ffbebd4e81468f
2023-05-25 16:16:30 +02:00
l_samenv
1de5455ef6 add haakeuro 2023-05-25 09:56:25 +02:00
l_samenv
db94def694 newest version of okasanas drivers 2023-05-17 16:56:49 +02:00
1407514458 phytron
better handling of restart status

Change-Id: I28f97b49d39ed7c6b781f0d8edb218e63e1b1fc9
2023-05-16 09:39:20 +02:00
050a2dc8dc phytron next version
with adaption of HasStates

Change-Id: I167ac8031bc5f7120c30031e7cfcb7587b42b61d
2023-05-15 11:12:52 +02:00
df4a37085a frappy-cli: fix init(*...)
Change-Id: Iba8106a779ac399e6d72d247ea93e6c1e8cdbf94
2023-05-15 11:12:31 +02:00
6697462f15 phytron: next fix
Change-Id: I72debb43b02f07cf9ff79286293105f052314a35
2023-05-15 09:03:58 +02:00
84d0d44f38 phytron with HasStates
test version

Change-Id: Ifbaa35421a64faad32c87bbcf758c236f900cd0b
2023-05-15 08:33:14 +02:00
l_samenv
fa9525fd4c Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-05-11 10:42:38 +02:00
l_samenv
087036922a move more code from bin/frappy-cli to frappy/client/interactive.py 2023-05-11 10:42:10 +02:00
l_samenv
1ce43a567b fixes in sea cfg files
- json_file must be a string, not a list
- rel_path is no longer to be converted to a list
2023-05-10 16:36:32 +02:00
c46947afd4 update phytron driver
offset as storage only (after current draft specs)

Change-Id: I1a005f149a8bd562124e2d40e49416957f66e851
2023-05-10 14:32:26 +02:00
3099c813d1 add unit=s to pollinterval
Change-Id: I6a28fecd4b0d650042f2f031a1b64b801fc2885e
2023-05-10 14:32:11 +02:00
8039351395 mercury, ips, sea, triton, convergence
after gerrit

Change-Id: Iff14047ecc476589aef10c96fae9970133b8bd14
2023-05-09 14:57:34 +02:00
750b5a7794 add empty description to Mod() for Sea classes
Change-Id: I3890782b4e08291f73db0bfc4671c6cbc14f05d6
2023-05-09 08:19:03 +02:00
a9fe8577c3 improve mercury driver
less fancy but more readable commands

Change-Id: Ifcc6a03199167179d984235c9b1bc7e14c60b51b
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31008
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-05 13:30:29 +02:00
l_samenv
74729872a8 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2023-05-05 13:25:10 +02:00
6b78e69dbe add HasOffset feature
+ remove all other unused features

Change-Id: Idff48bdabf51e7fa23547eac761f11320c41861c
2023-05-05 13:23:14 +02:00
3b95013b69 improve and fix errors with parameter limits
- in order to work properly, readonly=True in limit parameters
  has to be set before creating the write_* method
- more explicit: Use e.g. target_max=Limit()
- fix an error in the loop over the base classes when creating
  the check_* method
- more concise error message when a limit is violated
+ fix an error in playground when using persistent parameters

Change-Id: Ibd557b55d6c0d9a2612cda4460b16e3c70e1bc9e
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31017
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-05 13:21:37 +02:00
85166344d2 improve interactive client
- remove irrelevant traceback on remote errors
- add run() function to execute scripts
- when started with bin/frappy-cli, use separate namespace

Change-Id: Ic808a76fa76ecd8d814d52b15a6d7d2203c6a2f3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30957
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-05 13:20:54 +02:00
ca6b7a65c0 improve mercury temperature loop
- remove appearance of Done
- add auto flow
- try up to 3 times in 'change' method if read back does not match

Change-Id: I98928307bda87190d34aed663023b157311d4495
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30981
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-05 13:20:38 +02:00
f528cc4808 fixes on HasConvergence and HasOutputModule
- HasConvergence must inherit from HasStates
- control_active should have a default

Change-Id: Ic8b430003fdb746bf76782b74fa04e43c700c2e2
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/31023
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-05 13:18:51 +02:00
3314241631 [WIP] phytron improvements
- Limits
- offset
- power cycle behaviour

Change-Id: Id2f717c362cd7e1e37f180c8130b0e086e724389
2023-05-05 13:16:41 +02:00
3fcd72b189 merge manually with mlz repo
as of 2023-05-04

Change-Id: I5926617c454844927799e20a489db20d538db100
2023-05-04 16:34:09 +02:00
l_samenv
5bc0b94c6d fix mb11 slot for updated mercury driver 2023-05-04 15:25:05 +02:00
bbe70fb3cb add missing files from secop_psi
- all of them have to be checked!

Change-Id: I89d55ca683d0b2710222f14c2c3cd42f8fbf3a1f
2023-05-03 11:24:47 +02:00
31be98c62e MB11: increase persistent_limit to 11.1
Change-Id: I6849877212a8fc2ac16ef80d727581ae7f6c5e94
2023-05-02 16:49:35 +02:00
94070121c7 converted smamor 2023-05-02 16:43:09 +02:00
1961f91567 add switching_sensor 2023-05-02 16:39:34 +02:00
e38139089f add hvolt_long and varioxstick (zebra) 2023-05-02 16:38:27 +02:00
e2c51b3dd1 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-05-02 16:35:50 +02:00
b77c222b72 add setsamp to ma02.config.json 2023-05-02 16:34:23 +02:00
b55af7b20b add ma7two, oventwo and ovenstick (sans) 2023-05-02 16:32:04 +02:00
72add69b65 add rt and sch (from hrpt) 2023-05-02 16:19:07 +02:00
dmc
1a44c2d513 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2023-05-02 16:09:16 +02:00
0fb10a0a10 converted cfg files from camea 2023-05-02 16:07:38 +02:00
748ea1400a improve interactive client
- remove irrelevant traceback on remote errors
- add run() function to execute scripts
- when started with bin/frappy-cli, use separate namespace

Change-Id: Ic808a76fa76ecd8d814d52b15a6d7d2203c6a2f3
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30957
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-02 15:54:32 +02:00
5784aa0f5d improve mercury temperature loop
- remove appearance of Done
- add auto flow
- try up to 3 times in 'change' method if read back does not match

Change-Id: I98928307bda87190d34aed663023b157311d4495
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30981
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-02 15:54:14 +02:00
6c02f37bbb issues with StructOf
- depending whether client or server side, handling of optional is different
- fix issues when struct is used as keyworded command arguments

Change-Id: I72b347b1a96ee3bce1f67dace4862c313c12c7a9
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30972
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-02 15:52:51 +02:00
d6d564f4aa a playground for debugging drivers
playground for trying out drivers by calling methods read_*
and write_* directly without starting a real SECoP server

Change-Id: Ia7d2366920d29794a4eda5d7bfb2b62d4930eb65
Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/30944
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2023-05-02 15:52:19 +02:00
da15df076a fetched mlz version
- before some chamges in the gerrit pipline

Change-Id: I33eb2d75f83345a7039d0fb709e66defefb1c3e0
2023-05-02 15:25:11 +02:00
dmc
9fc6b6c0fd add ill3 and ori1 stick 2023-05-02 09:31:09 +02:00
b19a8c2e5c converter for creating python config files
+ testmode in server returns errors
+ fix in (old) statemachine

Change-Id: Icdfd6c3d8f70e717fecd61e8a54adad326be6000
2023-01-23 18:00:56 +01:00
68b45978a7 ppms.cfg: add target=0 in mf
Change-Id: Ibccf95b54ba93a0b0648c61b7630ae376bf3e70e
2023-01-23 18:00:20 +01:00
7d4dfdebbd fix bug in k2601b
convert returned float (which is integer) to int

Change-Id: I8363f4d5188f2b1be89f1383da20c76522286424
2023-01-23 18:00:20 +01:00
6c325460f7 make doc when .git is not there
accept failure of secop.version.get_version()

Change-Id: Ia689bd4f56b848bc354c0d68826a3174f0746a97
2023-01-23 18:00:20 +01:00
c70b61e4e5 relax identification check
accept *,SECoP,*

Change-Id: Ieb56e9c57fc5eb18e025fbc2f1d17a9d6e3f0a97
2023-01-23 18:00:20 +01:00
l_samenv
589b857039 add driver for LakeShore 372
- including channelswitcher
2022-12-21 11:05:15 +01:00
l_samenv
ad4a6d2e09 improved cyoltd (flame magnet)
- use a statemachine
- do more control in frappy, switching from persistent to driven
  internally
- a lot of fixes
2022-12-21 11:00:19 +01:00
l_samenv
766f15beee improvements in magfield
- use HasTargetLimits instead of HasLimits
- move ramp_tmo parameter to SompleMagfield
- add last_target method
- fix progress check in SimpleMagfield.ramp_to_target
- better mechanism for setting to persistent mode after restart
- fix switching mode
- fix on_error
- fix condition for shortcut start_field_change -> check_switch_off
- remove direct status updates
- move check for manual switch heater operations to ips_mercury
2022-12-21 10:57:41 +01:00
l_samenv
79b8cd7b2d fix inheritance of status codes attached to state functions 2022-12-21 10:38:11 +01:00
l_samenv
bd0f3a0b07 fixe in triton and mercury 2022-12-19 16:13:06 +01:00
l_samenv
c4f9f2ef4b rename action to dil_action 2022-12-19 16:12:06 +01:00
l_samenv
0820d537c3 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-12-19 16:09:40 +01:00
1a6aa893e4 move persistent_field parameter from magnet.py to ips_magnet.py
'persistent_field' is in principle the same as 'value'.
however, on IPS it might be different, at least it is a seperate
HW parameter
2022-12-19 16:03:44 +01:00
b10c722ff6 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-12-19 15:13:20 +01:00
b7a1f17e5e fix new statemachine with ips magfield
+ add on_error, on_restart etc. to states.py
+ add n_retry argument to mercury change/multichange
2022-12-19 15:12:00 +01:00
l_samenv
a0d14c30be attocube: more robust moving
- try up to 10 times when end of travel or no more progress
- issue WARN instead of ERROR when moving did not work
2022-12-02 10:37:45 +01:00
l_samenv
e668b6a439 attocube: add offset and change to HasTargetLimits 2022-12-02 09:12:51 +01:00
l_samenv
3483c3374d allow pollinterval = 0 2022-12-02 09:10:07 +01:00
l_samenv
d71a512454 new features HasTargetLimits and HasSimpleOffset
according to standard
2022-12-02 09:07:20 +01:00
l_samenv
b1608c4d7f Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-12-02 09:00:12 +01:00
l_samenv
e4c1f35e4a add attocube 2022-12-02 08:54:26 +01:00
l_samenv
3ab7eb99ab add flamemag / flamedil config 2022-11-30 14:14:47 +01:00
l_samenv
ef9d89993c new specs of HasOffset and target_limits 2022-11-30 14:14:06 +01:00
l_samenv
9887ba0721 improve Attached
- allow a default value
- make copy method work properly
2022-11-30 14:11:05 +01:00
397ca350f8 add FLAMP furnace 2022-11-24 07:56:09 +01:00
99220400f1 add FS furnace 2022-11-24 07:55:36 +01:00
dmc
4e8636a620 heliox: make temperatures seperate modules 2022-11-24 07:50:24 +01:00
dmc
f14bd553a8 disable closed loop on MA10 rotator 2022-11-24 07:49:36 +01:00
2845a82236 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-11-23 22:41:49 +01:00
4f5cc3059e add FT furnace 2022-11-23 22:41:23 +01:00
l_samenv
d845fedc03 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-11-21 14:38:40 +01:00
l_samenv
1b2e364f70 magfield adapted to new state machine 2022-11-21 14:37:53 +01:00
l_samenv
4405b2b02c new state machine, HasStates mixin 2022-11-21 14:13:52 +01:00
l_samenv
49b9bfa11d improvements for triton
- set cooldown channel befor setting action
- improve max heater setting
2022-11-15 16:57:52 +01:00
l_samenv
df428f4c0c check readback and try up to 3 times when it does not match 2022-11-15 16:57:00 +01:00
0c93ca8c75 add comment "do not use mb11stick" 2022-10-18 16:41:04 +02:00
971c1dcfee Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-10-04 15:13:23 +02:00
498dbd4179 sea.py: fix status datatype
sea status is a string (not a tuple) and needs therefore
special treatment.
interestingly this bug did not yet appear ...
2022-10-04 15:11:57 +02:00
l_samenv
00b0a54f12 ramp unit must be $/min 2022-09-22 17:12:54 +02:00
l_samenv
48076edd99 improve magfield and ips_mercury 2022-09-22 17:12:30 +02:00
Jenkins system
485e81bfb0 [deb] Release v0.13.1
Change-Id: Ib038475d75de7b2976bc463423c2493eb531c02a
2022-09-21 16:19:34 +02:00
Enrico Faulhaber
0df50bb0f9 secop_mlz: minor rework entangle client
Change-Id: Ie406b4220c22cdbf302a1fd36f2d7407d81a47fa
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28951
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2022-09-21 16:17:01 +02:00
de5f17695c make startup faster in case of errors
When the io of one SECoP module fails, it takes ages to startup
because each parameter poll takes the time to wait for a timeout.
After the first communication error on an io, no more startup polls
are tried on the modules using this io.

Change-Id: I0d250953dfe91a7d68d2d2b108395cc25d471afe
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28588
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-09-21 16:16:48 +02:00
e4aa2149f7 phytron: fix warning on repeated comm. error
log only a warning when several retries ware successful

Change-Id: I2f1dfba920b0841914da82229820bcdd4b97c6e9
2022-09-21 11:35:42 +02:00
9f656546df fix undefined status in softcal 2022-09-20 12:07:11 +02:00
5affb9f31b fix bug in persistent.py
- use dirname instead of basename
2022-09-20 12:07:11 +02:00
5e3bf96df1 rework of uniax
- try to deal with anomaly at 17 N
- reduce pid on overshoot
- use new statemachine
2022-09-20 12:07:11 +02:00
07995e2235 fix bug when restarting statemachine
fixed bad if clause
+ better debug message on restart/stop
2022-09-20 12:07:10 +02:00
54f091d0fe disable encoder for ma6 stick motor 2022-09-19 11:38:33 +02:00
14a71427fa jtccr: fix rel_paths 2022-09-19 11:37:56 +02:00
486be9604e [WIP] uniax: removed do_ prefix
Change-Id: I98d56a8ece681515de8f05767c67686715212c09
2022-09-16 14:57:58 +02:00
a8f1495bc8 [WIP] uniax after changing to StateMachine
Change-Id: I0173f8c8eaaeb2526477d05803a615673297667d
2022-09-16 14:53:42 +02:00
3ab9821860 improve formatting of values
Change-Id: I4a9290e85ee2071a3f2cfe0d00bc7dc4dcb4caed
2022-09-16 08:06:45 +02:00
0b9e227669 state after discussion with users
- cirterium for "no substantial forece change" must be improved
2022-09-16 08:16:15 +02:00
befba09acc fix main value unit
Change-Id: I27186e66bf065e015680a6925c5428714444c25e
2022-09-14 14:54:48 +02:00
554f265eb8 fix main value unit
Change-Id: I30c6107fae31b5087bac75d66db6be8dee78a757
2022-09-14 14:53:59 +02:00
4287ec6477 apply main unit also in structured types
Change-Id: I5a3efb167f2b460b847d8e7ac75a21848976b5f8
2022-09-14 14:50:39 +02:00
aad1c33742 improvements on interactive client
- add selective logging
- fix handling of exceptions

Change-Id: I7e2c2d4ed12302874c3bb2cc7bd707aa8e487341
2022-09-14 13:59:51 +02:00
b0315e133b rework switch timing
- specific things in ips_mercury.py
- general things in magfield.py

Change-Id: I7c2bae815b9a80a17803b44b8941ef3dea3adb60
2022-09-14 13:58:12 +02:00
l_samenv
c3f55435da add reading of slave currents and voltages
with fast polling
2022-09-14 10:59:55 +02:00
12cb0cdade Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-09-12 15:16:57 +02:00
7ed7dd7493 add combined mb11 / mb11 stick 2022-09-12 15:16:26 +02:00
031b30a4aa heater slots H2 and H3 are exchanged! 2022-09-12 15:15:24 +02:00
3597adf869 fix code for current framwork version
- remove _iodev, use HasIo instead of HasIodev
- add earlyInit super call
2022-09-08 14:57:06 +02:00
8bfe969a95 HasIO: attached io must not be mandatory
as an uri might be given instead.
2022-09-08 14:55:36 +02:00
5a78a5b258 fix wrong name (uniax.cfg)
Change-Id: I7b132aa9474edd93321c74fa9262917d0766879f
2022-09-08 09:26:01 +02:00
298f94e4d5 update code (remove underscore from attached modules)
Change-Id: I10bd6bec8f5e9459219f3186fd696e053a264604
2022-09-08 09:22:32 +02:00
0fec736886 update code in several drivers
- remove poll arguments
- change from HasIodev to HasIO

Change-Id: I2668f1068c17a50d9aff43b1bb3e4fb03c8d840e
2022-09-08 09:13:03 +02:00
38b3a192ab fix move_limit in cfg
Change-Id: Iea99a39155e6172bcc265c350431a438d20f2fc3
2022-09-08 08:31:38 +02:00
4959619d56 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-09-08 08:27:43 +02:00
6caf4fc993 uniax stick 2022-09-08 08:27:17 +02:00
95eb4e969a change safe current to 0.3, set offset to 15 2022-09-07 13:14:51 +02:00
ada4c43ebf change max force to 190 N 2022-09-07 13:14:51 +02:00
9a40d27354 fix bug in ls340res
return value must be converted to float
2022-09-07 13:14:51 +02:00
6929422b94 fox update of param2path dict
Change-Id: Ie8de3d7f549ba29954058f3d516d1c3965932aa0
2022-08-24 17:02:21 +02:00
l_samenv
2cd66c2e08 sea: allow multiple parameters being updated with one hdb path 2022-08-24 16:57:27 +02:00
l_samenv
268ebbe00e Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-08-23 17:21:21 +02:00
l_samenv
ea960f2250 fix ln2fill enum 2022-08-23 17:21:01 +02:00
dmc
9673f7b242 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-08-22 15:56:48 +02:00
dmc
292d028fe6 add ill5 p sample stick 2022-08-22 15:55:58 +02:00
boa
aa0c0421c3 add Be-Filter addon for boa 2022-08-19 12:43:36 +02:00
db43a77614 remove some log.debug statements
in order to sync with frappy@mlz

Change-Id: Iab89cb313fb6969c91663b8ebc56bdcb96ed2dd1
2022-08-16 17:17:54 +02:00
21bcc7ce98 an enum with value 0 should be interpreted as False
for example: bool(Enum(off=0, on=1)('off')) is False

Change-Id: Ieb200b4ecf0eed50b657ecc00f73a69810ad828f
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28586
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-08-16 17:16:02 +02:00
Enrico Faulhaber
7b9c099321 default unit to UTF8
Change-Id: Ic958346beb1a3b164c8d7b2826d59cf7e3991e15
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28946
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Tested-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2022-08-16 17:14:50 +02:00
33a7c56fa2 allow to convert numpy arrays to ArrayOf
accept all sequences instead of just tuple / list
+ change Module.announceUpdate to convert value before
  comparing with previous one (comparing will not work with numpy arrays)

Change-Id: I5eceef4297607107e2dde688af2833d3651a8775
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28525
Tested-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-08-16 17:14:38 +02:00
ab2fe6200a reintroduced individual init of generalConfig.defaults
revert basically the former change
"init generalConfig.defaults only in secop-server"

The problem of import order when setting generalConfig.defaults
has to be solved by not overriding already existing keys when
setting the default.

Change-Id: I82121e346607dd74146279c4241e13ab63c14096
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28011
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-08-16 17:11:56 +02:00
d5d04dc82f add simple interactive python client
- SECoP modules are accessible as objects in the main python module
- parameters are accessed as attributes of these objects
- __repr__ is used for listing all parameters
- __call__ is used for 'change target and wait until no more busy'

typically used from a python interpreter or in a jupyter notebook

Change-Id: Idb55684eeff6d1262e5d1517a3ff934f1c1bf208
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28980
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-08-16 17:08:18 +02:00
f23e42de1f fix bugs with persistent_limit parameter
take into account that reading the switch heater might be delayed
2022-08-16 16:54:30 +02:00
2f6954c4f3 magfield: add persistent_limit parameter
- use update_switch_heater instead of write_switch_heater
  for detecting switch time
- switch_time split into switch_on_time/switch_off_time

Change-Id: Id90a8b2c2520e24f3ee4a34aee25d41210e5d6d4
2022-08-16 10:05:01 +02:00
dmc
b81fc7b122 remove tm from ill5.cfg
only one SeaDrivable per sea drivable allowed!
2022-08-15 16:22:02 +02:00
704bba292a add mb11 stick 2022-08-12 15:13:07 +02:00
f1e642b1b0 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-08-12 15:12:23 +02:00
8e3cdc80e4 improvements in magfiels/ips_mercury
- read voltage
- fix a bug with ._init name conflict
2022-08-12 15:10:23 +02:00
3496e391f6 check for last_target in conditions for redo 2022-08-02 11:19:30 +02:00
bb40a0820c use flag instead tolerance for redo check
when target is changed, a flag is set, and
this is used to jump back in the sequence to the right step
for redoing
2022-07-29 15:12:44 +02:00
l_samenv
8f739b11dc ILL1 .cfg created and ILL1stick 2022-07-06 16:14:16 +02:00
l_samenv
7ef386424c Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-07-06 11:24:56 +02:00
l_samenv
53b3dd2fad fix stick motor port number on ma02-ts 2022-07-06 11:24:27 +02:00
6554e5de47 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-07-05 11:02:15 +02:00
60ec1edb32 fix He-fill enum 2022-07-05 11:00:35 +02:00
131082313d added stick-motor addon 2022-07-05 10:57:43 +02:00
f12b0b3da0 add ill5 gas pressure stick
not yet tested
2022-07-04 14:23:51 +02:00
5ecd9557a3 add lev to ill5 cfg 2022-07-04 14:23:08 +02:00
l_samenv
3769ddca75 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-06-29 11:51:01 +02:00
l_samenv
a4dec7b832 fix ill5 cfg 2022-06-29 11:49:51 +02:00
390af7eff7 improve general config
for easier configuration of multiple servers on the same machine,
FRAPPY_* env. variables are overriding the values from the
general config file

Change-Id: Ifb00dae482dd366bd4b7951c76164af91cad9fc2
2022-06-29 11:42:33 +02:00
f495313018 dil2/3/4: added more temperatures, added dil3 2022-06-28 08:22:13 +02:00
18ded2159c changed mf from Readable to Drivable 2022-06-28 08:09:00 +02:00
760fc9eb40 added jtccr sea cfg 2022-06-27 11:06:45 +02:00
5d348eb7b1 fix ma6 stick motor port 2022-06-27 11:06:00 +02:00
86767e2fa1 add still and sorb heaters to dil5 2022-06-21 15:32:15 +02:00
8a995aafed fix issue with non matching persistent field 2022-06-21 15:31:44 +02:00
7379ea91e5 fix issue sending numbers in exp. format
numbers must be fixed point, with maximum 8 digits
2022-06-21 15:30:20 +02:00
cf42119f85 fix handling of persistent_field parameter
'persistent_field' parameter should be updated as long as the
switch is turning off

Change-Id: I76b592077ceb0a2a20beb8e6390487c620764650
2022-06-17 08:24:38 +02:00
80d9a790ec fixed proper parameter inheritance 2022-06-15 16:02:38 +02:00
5951312d40 fixes to make pylint happy
Change-Id: I95baf4e585603a640d4ec71076a4d509082775ed
2022-06-14 15:24:42 +02:00
778ac17172 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-06-14 15:08:35 +02:00
dfbc1c757a fixes in mercury an triton
- Valve is now a drivable, as it will check success, and retry,
  which might take around 1 second
+ some more
2022-06-14 15:07:17 +02:00
54b58f2188 step_size instead of speed_factor
no longer need to pre configure a speed_factor,
the proper units of speed and accel are taken from
the hardware
2022-06-14 15:03:53 +02:00
f855b9db40 fixes in convergence and statemachine
- set spent_inside to 0 on set_target
- additional debug log messages in statemachine
2022-06-14 14:07:24 +02:00
6fd365197a sea driver: no events for unexported params
Change-Id: Ia4b5f5f742d0240010218ee24dc147bb535c7c64
2022-06-13 14:09:13 +02:00
8b2abf7044 fix iodev to io in ill4stick.cfg 2022-06-10 14:31:44 +02:00
182a8c7e49 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-06-10 13:22:04 +02:00
6da1a89459 add dil4/variox, fix ma10 in cfg 2022-06-10 13:21:20 +02:00
f1d5e82bb4 remove unneccessary fiels in cfg/sea 2022-06-10 13:20:12 +02:00
e6fdd79df4 start SEA server if not running
before connecting to SEA

Change-Id: I75c02f25e023e0e1769810a180430efd48b9c550
2022-06-08 16:28:39 +02:00
a35231f5bd fixes in mb11/dil5
- no need fro second slot in TemperatureLoop, PressureLoop
- only ValvePos needs two slots
- added testwise heater to mix chamber

Change-Id: Iac4592d037a5e6a4f586041762992d75cc77e3de
2022-06-07 14:26:30 +02:00
9c7b6aeb94 various fixes on mb11/dil5 2022-06-07 11:45:25 +02:00
68e2e06905 fixes in convergence, mercury, phytron, triton 2022-06-01 09:21:47 +02:00
l_samenv
3563a0db16 fix ill4 2022-05-31 16:44:53 +02:00
4cb0031302 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-05-30 12:10:51 +02:00
4bfb76ca82 IPS mercury
+ mb11, dil5, dil2, variox configs
2022-05-30 12:09:57 +02:00
3e6f1bebf7 added features 2022-05-30 12:07:33 +02:00
Ultrasound PC
efca358c72 add adq_mr and iqplot 2022-05-23 15:30:23 -04:00
Ultrasound PC
319f3b4649 upgrade upltrasound to newer version of frappy 2022-05-23 15:25:41 -04:00
l_samenv
7fc030191d Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-05-19 18:10:14 +02:00
l_samenv
3959da6847 stick rotatation is either om or stickrot 2022-05-19 18:10:02 +02:00
39171fe06e add limits to phytron
Change-Id: I431374efab7a858db6a652f78533b13b12ba6d57
2022-05-19 18:05:52 +02:00
0972e8c7e8 add sign to phytron motor
+ fixes in ma10 config
2022-05-19 17:58:54 +02:00
7b9d2d1701 allow quiet SEA requests
SECoP read -> SEA hval should be quiet on the log file

Change-Id: Ie020b02ef62e5792ca60e08fe72b420a6377efee
2022-05-16 17:04:47 +02:00
l_samenv
f276b973f5 add variox 2022-05-16 15:28:30 +02:00
l_samenv
8739ef04d7 add ori3 2022-05-12 16:39:28 +02:00
aea73d976c add ori6 2022-05-12 16:23:58 +02:00
l_samenv
4c98a4c706 add sticks and cfg
ma02, ma10, ma11, mbe
2022-05-12 16:16:26 +02:00
l_samenv
62146aa477 add heliox stick 2022-05-05 10:31:50 +02:00
2bdfcf10a3 fix triton
tested at warm kelvinox triton system

Change-Id: I1c8064c78846db5b077363be3a8ecff5e2766ddb
2022-05-03 16:49:27 +02:00
f9db90d89b update secop_psi/sea.py
fixes after serveral changes in frappy
2022-04-29 16:30:19 +02:00
1ded96abba fix keithley 2601b after tests
- add missing super call in initModule
- change mode before writing levels
- fix MEASURE_DCVOLTS instead of MEASURE_VOLTS

Change-Id: Id93187e082db9868f443d4ef8cbdc85acd11be2b
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28256
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-29 14:03:04 +02:00
cb170bd73b allow a configfile path as single argument to secop-server
when a full path is given as single argument to secop-server,
the server name has to be sanitized

Change-Id: I1d11f076157548e90877f380f0cab3a6a3f96784
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28232
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-29 14:03:04 +02:00
a379805e43 add 'ts' to the ppms simulation
+ convert from CRLF to LF

Change-Id: I46fab0c970ccc5e7e704a5dc0ab2cfd51213cd31
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28233
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
2022-04-29 14:03:04 +02:00
l_samenv
9ff8c3ba54 add ma10, add stick motors 2022-04-29 11:08:04 +02:00
l_samenv
1d7351ba4f Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-04-29 08:47:39 +02:00
l_samenv
3ac8876b37 cti5, cti7, ma10
+ fix .gitignore
2022-04-29 08:47:11 +02:00
9fa5aba052 add dom motor to MA7
Change-Id: I32b9ec469e030da90519b0a9e3d38b881e94d59f
2022-04-28 17:21:46 +02:00
bc13a912b4 change descr of ccr3 (ZEBRA) 2022-04-28 16:32:38 +02:00
l_samenv
33ba9ca946 add ccr3
+ add missing ma6.config.json
2022-04-28 16:31:20 +02:00
7d43f1cd58 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-04-28 13:43:46 +02:00
21a3865c5d general ini files for main, stick and addons 2022-04-28 13:43:09 +02:00
f1a639bc3c add secop_psi/triton.py
triton dil support

Change-Id: Ifbb0d382adec29b031a1e99c68515f7bb23ead45
2022-04-28 12:56:42 +02:00
98cdbafa7a fix mercury
secop_psi/mercury.py was not merged properly

Change-Id: I638fac70b278aa1ffb1378ad0f97b375a7e40869
2022-04-26 08:51:58 +02:00
l_samenv
6752997048 replace 'iodev' by 'io' in cfg files 2022-04-22 16:45:12 +02:00
l_samenv
026ab3f4b2 Merge branch 'wip' of gitlab.psi.ch:samenv/frappy into wip 2022-04-22 16:36:03 +02:00
20ad159722 support for OI mercury series
- temperature (incl. heater)
- pressure (incl. control via valve motor)
- LHe and LN2 levels

not yet included: magnet power supply

Change-Id: Id4ee8f9b7ebfa6284e519ba485217f9a19d70d59
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28028
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-22 16:35:24 +02:00
7316632fa6 improve poller error handling
- repeated errors on poller are only once logged (per poll
  function / read_* method)
- during exception handling, silent=True on a SECoP error indicates
  that the error is already logged
+ fix the name of HardwareError
+ add test for consistency of SECoPErrors
+ catch socket.timeout in AsynTcp

Change-Id: I9df6c775cc19553b22a4d6e39591092adf7ff9a1
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28139
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2022-04-22 16:35:24 +02:00
2159753398 avoid deadlock in proxy
in secop.proxy the callers modules method announceUpdate is
called from an other thread while the accessLock is locked,
creating a deadlock. solve this by creating an other lock
'updateLock' for the update.

+ add status parameter even to non-Readable proxy modules,
  in order to indicate a failed connection
+ fix an error in secop_psi/softcal.py

Change-Id: Iae7c6d5a74001150a47aa9dc99209c15d972cd5e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28130
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-22 16:35:24 +02:00
8cb3ba7dfc fix error in secop.logging
Implement LogfileHandler.getChild. This is needed to inherit
the configured level from the parent handler.

+ remove redundant assignmet of logfile_handler.max_days

Change-Id: I7277c28221bbb6108d75f2437634e9db9bf6761e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28140
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-22 16:35:24 +02:00
b1a24b253a improved trinamic driver
- safe_current: current limit for unlimited move
- move_limit: max. angle to move with high current > safe_current
- direct axis parameter access is not exported by default
- support for home switch
- allow use without encoder
- automatic reset for motors in a configuration, where the motor
  current is deliberatly low for a limited torque
- improved error message on driving failures

Change-Id: I25f8516905a2c4c3cda09d091d5a43004ec6dc6f
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28029
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-22 16:35:24 +02:00
5a553dbdeb motor valve using trinamic motor
This valve needs 8 turns to open. As the encoder forgets
the number if turns on power cycle, a home switch is
mounte, which engages during the last turn when closing.
The final close position is determined by closing the valve
with a defined motor current/torque.

+ fix an issue in StateMachine.start: the first cycle
  must be called after the new state is assigned

Change-Id: I34cd05d10d97b043f9e3126310943b74ee727382
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28030
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-22 16:35:24 +02:00
l_samenv
e9f687e6dd update phytron driver
+ fixes in secop_psi/sea.py (iodev)
2022-04-22 16:25:14 +02:00
1ac2f8557c fixes in sch5 2022-04-20 15:53:15 +02:00
774f33122a fixes in secop_psi/sea.py
is_running parameter
2022-04-20 15:52:43 +02:00
1da7657483 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2022-04-20 14:52:17 +02:00
ac3bf5b122 add cryosim and magsim cfg
Change-Id: I5ad510c2119ec08cbef234b6565dda69aa370436
2022-04-13 10:46:57 +02:00
f6f2dd189b use a common poller thread for modules sharing io
When several poller threads are using the same io, the resposivity
of client requests is reduced, as every thread first finishes
its pending communication requests, before it is the turn of the
request thread. This is solved by using one common poller thread
for all modules sharing the same communicator.

+ fix an issue with overriding a property with a parameter, as
  this is the case for pollperiod (cfg was applied to property
  instead of overriding parameter)
+ separate setFastPoll arguments into flag and fast interval
+ fix missing announceUpdate call when read function fails
+ fix mechanism for triggering polls after an io connection
  reconnected again.

Change-Id: I1115a61fae3de80d18416e61f40b52a0eebb637c
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28021
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-08 15:36:23 +02:00
d5924567da fix statemachine
- fix: calling state.start(<new state>) on restart must ensure
  that the function <new state> is called before state.start()
  returns.
- modify slighly behaviour of cleanup function

Change-Id: I483a3aefa6af4712b3cf13f62c86d4c06edd1d8d
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28020
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-08 15:36:23 +02:00
9152ea1d26 reintroduced individual init of generalConfig.defaults
revert basically the former change
"init generalConfig.defaults only in secop-server"

The problem of import order when setting generalConfig.defaults
has to be solved by not overriding already existing keys when
setting the default.

Change-Id: I82121e346607dd74146279c4241e13ab63c14096
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28011
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-08 15:36:23 +02:00
a124adab97 avoid race conditions in read_*/write_* methods
using one RLock per Module
+ init generalConfig for all tests

Change-Id: I88db6cacdb4aaac2ecd56644ccd6a3e5fd2d1cf2
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/28005
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-08 15:36:23 +02:00
2e21bcdd0a HasConvergence mixin
the HasConvergence mixin runs a state machine to determine
when the value has reached target from parameters 'tolerance',
'settling_time' or detects convergence failure depending on
the parameter 'timeout'.

Change-Id: Iccc3d43bcf5ab54ae02ce3a81423c2decc1b392d
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27967
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-08 15:36:23 +02:00
526a182ed7 init generalConfig.defaults only in secop-server
generalConfig.defaults must not be set on import, as this
depends on import order

Change-Id: I00395b40b4281ddc044c196713f6512068011380
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27985
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-04-08 15:36:23 +02:00
b1ddc01fbb merge until "support write_ method on readonly param and more"
from gerrit

Change-Id: I8d2ad2a381d3a37947d8afc5e17be0428d94df36
2022-03-21 14:00:12 +01:00
7c9296fe2e even more merges from gerrit
Change-Id: I4cfddc8fd4157ceae353789f2f60d834ec05974e
2022-03-08 10:54:04 +01:00
34b93adef0 more merges from gerrit
Change-Id: I13441cd8889dd39f74a2dd1a85e75a1b76bb93c8
2022-03-08 10:52:14 +01:00
10018b8cad some more merges from gerrit
- removed files
- modified drivers
- fixed READE.md

Change-Id: I47ae486df4dde3d60cc5e0e328194718dd396d87
2022-03-08 08:54:47 +01:00
57e0a2cc72 add statemachine
Change-Id: Icd35d284329a854a9757cb1963a70662b15fb6bb
2022-03-08 08:37:26 +01:00
a2bfe878b6 add handlers
Change-Id: Ia0604ea9e4fd7a226cf6eccb326df003f88cc4b0
2022-03-08 08:36:40 +01:00
9320541754 result from merge with gerrit
drivers in secop_psi

Change-Id: I7fd8312b11f365b423e66b2417b9e54ec6558a11
2022-03-08 08:35:41 +01:00
bd246c5ca7 result from merge with gerrit
secop subdir only

Change-Id: I65ab7049719b374ae3ec0259483e7e7d16aafcd1
2022-03-07 17:49:08 +01:00
Georg Brandl
dee3514065 Makefile: fix docker image
Change-Id: I90a3fe36abbea0501c7e7e27fa33e90bfd4f116d
2022-03-07 11:21:28 +01:00
93c8866f37 fixed README.md
Change-Id: I24445416d1195aed50a153f6462b2a168e1be1c4
2022-02-02 11:40:30 +01:00
acb3bdad6a varios fixes at psi repo, as of 2022-02-01
Change-Id: I8cdc849126d52ef0f2f27a0faf661830aac6f874
2022-02-02 09:57:30 +01:00
5e3fb10884 trinamic (psi repo!) as of 2022-02-01
Change-Id: I87b94ff0fa7a56abc6eae65fa76539a0c6a8f396
2022-02-02 09:56:44 +01:00
3b25251e10 ppms fixes (psi repo!) as of 2022-02-01
Change-Id: I96c81a0772baf5e6038d27d3a40e1163c4669289
2022-02-02 09:56:08 +01:00
903e17a6e5 mercury, as of 2022-02-01
Change-Id: Ifdbb2afc827b894874edaec50e82b645023beda9
2022-02-02 09:55:43 +01:00
9109170752 logging as of 2022-02-01
Change-Id: I63c681bea9553cd822b214075b163ca6c42fe0cc
2022-02-02 09:54:54 +01:00
05d0cfb193 history, as of 2022-02-01
Change-Id: I725a57546df8f7c9e5ffe04eb98872f2a609efe4
2022-02-02 09:52:01 +01:00
8253fe471b check for missing supercalls to module init methods
Change-Id: I8b7fe5cdd2883fd45532a3e8ac2d7b32945b36a3
2021-12-21 09:46:50 +01:00
245f4f48bf all members optional be default in struct
this apllies only to the argument in frappy - in the case
of all members optional, they are put into the description,
not honouring issue 69

Change-Id: I8e9e4d9ef6bd5b9bb2748f3c6116b7094cd9e927
2021-12-21 09:21:00 +01:00
c523e8f84e [WIP] work on history writer
Change-Id: If8c42091c734fb8c7b386c06429f1b21a7e169ec
2021-12-03 16:50:34 +01:00
6e73420d0f add doc strings to commands missing them
Change-Id: Ib0320cc4653ff695a7ee2bad3486eeec5309d3b1
2021-12-03 16:49:48 +01:00
483d4c9d6f add doc string to Persistent.factory_reset
this is mandatory for a Command !
2021-12-03 16:26:07 +01:00
77acda840a fix tests from mlz repo
- fix omit_unchanged
- names too short
+ other pylint complains
Change-Id: I3c277b461fad1a5fdf8e76ff1cc42b8742d1de16

Change-Id: I58fb64f91bcc2efef20df68f5c63a64315413286
2021-11-12 17:16:59 +01:00
1eecc93f71 fix feature for removing commands
from a bug introduced in the 'fix parameter inheritance' change

Change-Id: I757c354130077d8838aac864b21b4f81caa9bccf
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27096
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-11-12 17:09:29 +01:00
1d9e07edb4 add more tests and fixes for command inheritance
- fix CommandType.__repr__
- secop/modules.py: command properties are allowed to be configured:
   - section 2: remove comment and rename
   - section 3: all accessible properties should be checked
- command description should be inherited also when taken from docstring
- move test for command inheritance to test_modules.py
- added tests to check for valid properties of commands

Change-Id: I5fd04e03be1faec5e54fed9735620bc5dc0f89c0
2021-11-12 17:07:11 +01:00
9058ef054b various small changes
- set default target unit to '$'
- shorten too verbose error message on client
- add shutdown method to server and dispatcher

Change-Id: Ib3a8b26bc31e988e45a3ff2efd734168d723d794
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27095
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-11-12 17:00:17 +01:00
a7b741eaa4 updates from mlz repo
- asynconn: raise * from *
- asynconn: correct handling for timeout in AsynSerial
- add new py35compat
- target unit $

Change-Id: I052185ad3ebb3e3d1e3374f7ece9c7df06223951
2021-11-10 14:37:57 +01:00
41ce909172 update to changes from mlz repo
- bug fixes in error.py
- add from * to raise statements
- fix py35 compatibility
- finalize omit_unchanged_within feature
- fix follwup bug (missing Param.override) in proxy.py

Change-Id: I621c01a0d5e1ec6696fb06f39666f3316fb53649
2021-11-10 13:44:14 +01:00
7690481938 secop_psi.softcal: default path for calib
Change-Id: I5ad2159587f13e1a0bcb75764397d4c784ed1c87
2021-11-08 14:24:09 +01:00
l_samenv
3d9e9c59d6 fixes in sea
- call explicitely __set_name__ on produced parameters
- as Parameters.override has changed, do not use it
2021-11-04 12:56:42 +01:00
7d2eacfe5c fixes in sim_uniax 2021-11-04 13:01:40 +01:00
ccf38f87d9 remove do_now argument for next_action 2021-11-04 12:58:33 +01:00
b6cadf4a69 add ill4
+ fixes in focus-be-filter
2021-11-04 07:51:37 +01:00
1c1911f8a8 adapt uniax simulation to newest uniax version
Change-Id: Iad13306edf007ecfa4aebafdfb0bd38fa6be9c6a
2021-10-27 16:35:54 +02:00
99ebb9d110 closed loop force control 2021-10-27 16:36:44 +02:00
e47d07f706 fix set_zero
and cosmetic changes
2021-10-27 16:35:57 +02:00
5f034a40f8 new version using actions state machine
Change-Id: I3de3ee8077aa11b66a0b15232d8f9313c2ab0226
2021-10-08 13:26:23 +02:00
57082e276f uniax, version 7.10.2021
- driving with a generator
- 3 phases
  1) find active range (low current, far movement until force over hysteresis)
  2) release force until well below target
  3) adjusting using pid_p. (this is in fact an integral factor)
2021-10-08 08:53:22 +02:00
2c6b42f2aa merged after getting from uniax
Change-Id: I1049ac1a22fd3013c360dba4eda9e53784ac36a5
2021-10-06 14:26:05 +02:00
762913012b uniax.Uniax: fixed tolerance
Change-Id: I201c54715ef7f70a164f0f72116c5a8e737c128f
2021-10-06 14:19:20 +02:00
f491e53f8a fix uniax cfg typo 2021-10-06 14:12:56 +02:00
92a812f92f update uniax.cfg for current box 2021-10-06 14:11:40 +02:00
c0fbbdb419 remove whitespace
Change-Id: Ibe7acffe1dcdcd4932fa4275d14e8b9b87573537
2021-10-06 14:02:55 +02:00
29226a1062 uniax: added force control as seperate module
Change-Id: I8b14fc90f5885834e342f6bc5e5dd0ea711b27ea
2021-10-06 13:33:34 +02:00
70b9c88f82 revert signature of Accessibles.copy() method
no more kwds arguments, method 'merge' should be used

Change-Id: I7028d9df8b69c018dcdc0c55d3ae0f71e24ee15b
2021-10-06 13:31:21 +02:00
0d3df7be92 sameside approaching
Change-Id: I8b73d0ae0475bc727b49edd6f245c2204c51695b
2021-10-06 09:08:29 +02:00
5b7f4604ad more precise wording, typos
Change-Id: I6ca052fa512b5864b1ce29a22808a432c6f527db
2021-10-06 09:07:55 +02:00
09056ea87e set unit together with datatype
Change-Id: I412471880e71792160ee56a79375dc62dd4aaafc
2021-10-06 09:07:09 +02:00
21dfcbd290 allow interval in SimDrivable to be customized
Change-Id: Id59d263e5f54fda9388dcdaa34a3ce83b6d4a339
2021-10-06 08:46:04 +02:00
84e55d9c8d move markdown from requirements.txt to requirements-dev.txt
Change-Id: I07d700c7ac30900e4166611d0b17f80dff8d6f83
2021-10-06 08:41:53 +02:00
cbb005d942 show traceback of first error instead of last one
Change-Id: Iee418dcfb1d81a16112eed57b03c86242c2128b4
2021-10-06 08:34:56 +02:00
929f55055e fix property inheritance
Change-Id: If01b98fc38c730e73799b43c78838afee6cf6058
2021-10-06 08:33:52 +02:00
e38cd11bfe fix parameter inheritance using MRO
+ no update on unhchanged values within 1 sec

Change-Id: I3e3d50bb5541e8d4da2badc3133d243dd0a3b892
2021-10-06 08:32:47 +02:00
544e42033d fix merge errors 2021-09-21 16:58:29 +02:00
8bbf65f6e8 Merge branch 'uniax' into wip
Conflicts:
	cfg/uniax.cfg
	secop/core.py
	secop_psi/trinamic.py
2021-09-21 16:52:15 +02:00
e98f81a7c9 reduce communication traffic
- expermental change: no updates of unchanged values within 1 sec
- reduce fast_pollfactor in trinamic
- improve stop behaviour of dpm.DPM
2021-09-21 16:40:54 +02:00
8f1375aa31 added/modified new drivers
mercury, phytron, cryotel

Change-Id: I2288dd39ec4eb3dd2a11ecd5acb4ca7fd704e017
2021-08-09 15:42:36 +02:00
584a293643 fix secop.io imports
Change-Id: I8abe4836312cdd2d17847ca0a117dceebaaac235
2021-07-27 09:19:28 +02:00
73e06c590b add Phytron driver
+ updates of cfg files

Change-Id: Ief24ee681423e18cae0fca29fe41419018d394dd
2021-07-27 08:16:36 +02:00
4f6cb8755e additional fixes in secop.io
Change-Id: Ifdda637183de2b878317c477215f5874d088a668
2021-07-27 08:14:01 +02:00
a037accbb8 backport fixes from MLZ repo
- unification of secop.stringio/bytesio to secop.io
- persistent parameters

Change-Id: I76307cccc5191ac8cbb5cfec6fb7450fcf6945f1
2021-07-27 08:11:51 +02:00
2ff3a17427 fix simulation
Change-Id: Iaa05d3a7a78b6000ab3c372074bf4053dd74aadb
2021-07-06 16:25:35 +02:00
495709b670 allow partial describe
in addition to the SECoP standard

Change-Id: If756e8d9d6a67d3194abc0fe2436cf7124713536
2021-07-06 16:24:44 +02:00
d9cc85c1df fix issues raising pylint warnings
+ small bug fixes

Change-Id: Ib63bf13ad06446d3ec3b8cd0b16f9426cef9e3f4
2021-07-06 16:23:06 +02:00
b30bd308a9 fixes for uniax device 2021-06-11 16:45:45 +02:00
039ece9549 allow to remove accessibles
removing an inherited command or parameter can now be indicated
with an attribute set to None

Change-Id: I9645c58e2589c878b62dcebe7a80f479a2b65339
2021-06-08 16:17:23 +02:00
6c4bb78f97 minor fixes
Change-Id: I41aa50b1742fb0e24ff5a34d6d9ba98a6b4c4905
2021-06-08 15:32:12 +02:00
b226f2c7c0 trinamic and persistent
- remove methods from Modules existing in secop.persistent
- do reset on start when encoder matched and motor was power cycled
2021-06-08 15:32:12 +02:00
3687ed85e5 first tries with uniax stick
Change-Id: I70da38aff091f7fc64f409485db335cde07163c9
2021-06-08 15:32:12 +02:00
7ff88cf819 fix issues with sea is_running 2021-06-08 14:59:45 +02:00
25b8780b11 persistent module fixed 2021-06-08 14:59:20 +02:00
246ab99e12 experimental persistent mixin
- still contains changes in mouduls/params ...
2021-06-08 14:59:20 +02:00
229604439b remove debug print statement 2021-06-08 14:59:20 +02:00
114af36ac6 first tries with uniax stick 2021-06-08 14:59:20 +02:00
ca6aebd290 added trinamic.cfg 2021-06-08 14:58:20 +02:00
49ad153605 trinamic driver and bytesio module
Change-Id: Id634e7514fecab6fd6bc3edf81e25ad41c2bb12f
2021-06-08 14:58:19 +02:00
c6157049d7 fix issue with a module based on a SEA subobject
Change-Id: I15102ef0e17cd4414e8699e2967292b3853d2ac0
2021-06-08 14:58:19 +02:00
3977fad3f3 correct to readonly=False for target parameter 2021-06-08 11:59:02 +02:00
eaac83e4d5 Merge branch 'wip' of gitlab.psi.ch-samenv:samenv/frappy into wip 2021-06-08 11:07:31 +02:00
1619e042e9 added fftf furnace and smamor 2021-06-08 11:06:39 +02:00
8d6ba91a5e changes defaults in ls370sim
Change-Id: I6388358c42a4b115fc5aec4df0d4588457140744
2021-06-04 12:26:58 +02:00
21c49df1a2 fixes on secop gui
- do not display a dialog when a command returns None
- apply fmtstr, if available

Change-Id: I74da3e86e4eae9000608581e0a0f6e8c72cef715
2021-06-04 12:26:34 +02:00
a771259ecf more fixes to SeaWritable
+ fix mbe.cfg
2021-05-20 17:57:41 +02:00
c779d49548 fix: handle non Readable SeaModules correctly 2021-05-19 18:10:48 +02:00
5f65b6b4ce handle non Readable SeaModules correctly
Change-Id: I5fa0a52926af3bb386c18de49fef9b1caba92e79
2021-05-19 17:54:36 +02:00
70c3f5f37f created SeaConfigCreator
running frappy with 'seadesc' cfg does the same as previously
starting 'sea' cfg and performing seaconn:_describe automatically

create mbe.cfg
2021-05-19 17:41:18 +02:00
3e599a24d7 fixed sea.cfg to be general 2021-04-29 10:58:15 +02:00
e638661edc if sea cfg not found, take from FRAPPY_SEA_DIR 2021-04-29 10:55:52 +02:00
772f45a241 add cfg/deleop directory
Change-Id: Ia9f15af8bb68a8306a9d966ef2b217d587f0ab28
2021-04-28 16:37:30 +02:00
e589ed1063 treat raised error message in modules.py correctly when arg is not a list
Change-Id: I4082a65849c71b3f212f2c8c345a6881f972d107
2021-04-28 12:01:34 +02:00
1a616ecab1 fixed doule entry tcoil1 in ma7.cfg
Change-Id: I547e7dcb6cca72004dd3ea8e56a0601e7bf8771a
2021-04-28 09:29:18 +02:00
61aeafdfb6 added cfg files for SINQ Frappy
Change-Id: Icb1ea5e2e1f9aedd77a6bac7ed6b14458aea4aa7
2021-04-27 17:54:20 +02:00
l_samenv
c89c982c42 improve comments (poller.py) 2021-04-27 17:15:28 +02:00
acbb17f367 updated README.md
the procedure may still need to be discussed

Change-Id: Iddf60ac93309ef2131d55f3858e11d6111a976b4
2021-04-27 17:00:06 +02:00
4bda112bb7 pollOneParam has no return value (avoid pylint complaint)
Change-Id: Iab75c970e106617ffd4e612d358da491312ca54b
2021-04-27 16:51:37 +02:00
8029443f1b fix issue with a module based on a SEA subobject
Change-Id: I15102ef0e17cd4414e8699e2967292b3853d2ac0
2021-04-27 16:07:49 +02:00
57e9367e40 improve more errors during startup
errors from a module a combined with a header and intended
details

Change-Id: I4be7bc2f8455fb0e3c9346f3bb23ac88e7589604
2021-04-27 16:04:24 +02:00
de7a91d727 fix poller issue with dynamic interval
calculating next due must also be done when current poll was not due

Change-Id: I18d9cbc61aa6ca66f3fc2dc4cdfa1fce29a87705
2021-04-27 16:04:15 +02:00
078ac7c600 fix 'ts' value 2021-04-26 16:04:33 +02:00
8b2c5f6144 fix issues with sea is_running 2021-04-26 11:56:48 +02:00
99eb600d90 fix handling of unknown sea messages 2021-04-23 09:21:47 +02:00
l_samenv
48d5fe5ea2 forward config description with describe method 2021-04-12 14:47:29 +02:00
l_samenv
331dc544ad use different names for seaconn in different frappy services 2021-04-09 11:46:24 +02:00
l_samenv
a5cc98d0b0 various improvements on the sea client 2021-04-08 10:22:53 +02:00
l_samenv
d3fc01689f improve more handling of errors when starting server
+ add shutdown method to server (and dispatcher)
2021-04-08 10:21:44 +02:00
l_samenv
dec286460d starting TcpServer in case of Address already in use
try several times, in case this is a restart. It seems that
allow_reuse_address = True is not always enough
2021-04-08 10:19:03 +02:00
l_samenv
d768d84ea1 check if configured item is available before setting
if neither a property nor a parameter exists for a given
configured item, just an attribute was created
2021-04-08 10:16:24 +02:00
l_samenv
4d8390c1fe better error message when validating int 2021-04-08 10:15:42 +02:00
l_samenv
6ec8348355 Merge branch 'wip' of git.psi.ch:sinqdev/frappy into wip 2021-04-08 10:14:41 +02:00
l_samenv
10dad6da47 client: change online state before callback
the client in NICOS is referring to the online state within the
callback.

+ better error handling
2021-04-08 10:11:04 +02:00
l_samenv
185bf7bc88 improved softcal
+ removed debug code from ls370
2021-03-18 14:01:28 +01:00
499ae69f29 improved k2601b
- read back mode
- mode has now 4 values

Change-Id: I0576c73b225cb16e7f890a9479d3b002c52b71ba
2021-03-18 13:56:57 +01:00
4d7e5d3cdc remove debug print statements
Change-Id: I51dc66b9cecb0f5e84bef36d1b4a541ddefcfbc2
2021-03-18 13:41:49 +01:00
48230334af fix inheritance problem with mixin
- a mixin should not inherit from module then it has Parameters
- Parameters in mixins must be complete, not just overrides
- check precedence of read_<param> or handler

Change-Id: I72d9355a1982770d1a99d9552a20330103c97edb
2021-03-18 13:32:54 +01:00
6538500881 more fixes for sea
Change-Id: I195bcdbe5f6b274e65dd431ed13a123c74a8d5bf
2021-03-11 15:57:04 +01:00
bcf57f53c3 fix access to sea config dir
- removed unused property json_path
- do not take the first directory in config path, but the first
  directory with a sea subdirectory

Change-Id: I4f0d72936ca616134c38568d88c57a33a3397ec6
2021-03-11 15:53:57 +01:00
fb01f81cb6 fix user friendly reporting of config errors
Change-Id: I42ec1ad2e18a0363fb7317c86743ff2f6665f049
2021-03-11 15:33:21 +01:00
3b03e578bb user friendly reporting of config errors
Config errors are collected first, and raised after processing
all modules. This is more user friendly.

+ remove redundant check for predefined accessibles in modules.py
+ fixed error handling for exporting parameters in params.py
+ fixed handling of bare attributes overwriting properties

Change-Id: I894bda291ab85ccec3d771c4903393c808af0a2a
2021-03-08 10:47:22 +01:00
804581546d user friendly reporting of config errors
Config errors are collected first, and raised after processing
all modules. This is more user friendly.

+ remove redundant check for predefined accessibles in modules.py
+ fixed error handling for exporting parameters in params.py
+ fixed handling of bare attributes overwriting properties

Change-Id: I894bda291ab85ccec3d771c4903393c808af0a2a
2021-03-08 10:33:20 +01:00
1ca35cf8e9 improved softcal
- better error handling
- bug fix
Change-Id: I43bdd4aa35723f43f9e4baf2723af812f04689d3

Change-Id: I5990c75a7a8153e95abee9548475783ee893bd08
2021-03-08 10:25:39 +01:00
l_samenv
adc9a6da71 fixed bugs from syntax migration
- a new wrapper for a read function is not only to be created when
  the a new read method is in the class dict, but also when
  it is inherited, but not yet wrapped
- a handler must not be ignored, when a write method is inherited
- a proxy class must not call checkProperties

+ remove trailing spaces in tutorial_helevel.rst

Change-Id: I16024c14232ea200db91a1bc07ec23326219ab68
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25093
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-03-08 10:22:58 +01:00
7f22a270e6 make softcal more tolerant reading .340 files
accept tab instead of space in 'Data Format' header keyword

Change-Id: I77e5500da5eaed6fd1097723533bc86207fa73d8
2021-03-08 10:21:23 +01:00
7d133bacfe update checklist for git branch sync in README.md
Change-Id: I788fba8cd748be090f82442ad20c839f206e5e3c
2021-03-03 14:47:47 +01:00
l_samenv
1760881f56 fixed bugs from syntax migration
- a new wrapper for a read function is not only to be created when
  the a new read function is in the class dict, but also when
  it inherited, but not yet wrapped
- a proxy class must not call checkProperties
2021-03-03 14:40:36 +01:00
04692bd1aa added README.md
this should be the only file not matching mlz branch
now in sync with 316cf9738db29920a99e29813513ed1da048994a
'added README.md'

Change-Id: I826fd8c782f95fde3f8f4ef15b15b8b8f99d9973
2021-03-03 11:04:15 +01:00
ffafd7344c removed obsolete files from merge
Change-Id: I98c6d06a680ef6885f38d4b3e6b3f51aa7ebd022
2021-03-03 10:19:59 +01:00
l_samenv
b1bf5e866d improve tutorial_helevel
- fix indent of query method
- add remark about the CCU4 cid command
2021-03-03 10:17:05 +01:00
l_samenv
e4748ef9c9 do not export pollintervals in ppms driver 2021-03-03 10:16:52 +01:00
b4bb172ada Merge branch 'wip'
Change-Id: I3ba389775ce9b02269ca9c20a42ec1bddf6c5d21
2021-03-03 09:46:20 +01:00
4fd9c17bcb move historywriter to secop_psi
as historywriter currently could be used at psi only
secop_psi is a better place for it

+ add comment about a general config file

Change-Id: I9b0e74d3da83ac485bd4bcc13475695c3140822c
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25077
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-03-03 09:06:14 +01:00
76c6ebe92c fixed errors during migration
- reference.rst did still contain do_<something>
- trailing commas in secop_demo/cryo.py

Change-Id: I5bb8bd310576366c8cfe406f0ec770fa40bcab5b
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25079
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-03-03 09:06:01 +01:00
12b0549cc0 merged master with work
Change-Id: Iedfb2bf7f28bfe45201adacec0645cc13abffe59
2021-03-03 09:00:45 +01:00
3aa99e2268 fix doc main index and tutorial index
Change-Id: Ibf0ca53e8e1c2ca7da6bb8a0a357f860e6744c8d
2021-03-01 14:51:26 +01:00
72eaeac698 fixed errors during migration
- reference.rst did still contain do_<something>
- traling commas in secop_demo/cryo.py

Change-Id: I5bb8bd310576366c8cfe406f0ec770fa40bcab5b
2021-03-01 14:36:58 +01:00
d3831b3974 fix doc and REAMDE
Change-Id: I2e022e29e52511ca1a7f529d6d1bae44a995a073
2021-03-01 14:31:02 +01:00
l_samenv
f861701fc2 update FG and SR drivers
these drivers should now include the last changes before
the syntax change. To be tested ...
2021-03-01 11:24:30 +01:00
452eb00417 again README
Change-Id: Ie1410448532253e85106d3d6c03ca7cd61db4bf5
2021-02-26 17:49:13 +01:00
52472acae9 impoved sync startegy (README)
Change-Id: I62da19c17d269e507833941d3f53c2aefd2a9a17
2021-02-26 17:46:55 +01:00
fee7c4904b added hook for optional history writer
- activated with envrionment variable FRAPPY_HISTORY
- using the (currently) private package 'frappyhistory'

Change-Id: I8f747b29d8311af677ed77268a4c38c8d71b08c2
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25064
Tested-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
3141e22894 lookup cfg files in a list of directories
environment variable SECOP_CONFDIR may be a ':' separated
list of directories to lookup for cfg files

Change-Id: I058be6a270d3a3f6cd8ca45fdd4ab68c80fa5c23
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25063
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
fbccd0f9b7 remove obsolete code
- basic_validators is not needed any more since the implementation
  of datatypes.Stub
- client/baseclient.y is replaced by client/__init__.py both for
  the gui client and NICOS SECoP client
- lib/parsing.py used by baseclient only

Change-Id: I15b6ac880017000e155b8f6b7e2456e1bbf56dab
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25058
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
9071a5bcf7 fix inheritance order
+ hide pollperiod on PPMS Modules

Change-Id: I77ad5502884360bf6babfd226de0675ee06a6196
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25054
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
1588703f99 try to follow PEP8
- fixed most important code after checking with flake8
- ignored code which has to be reworked or removed
+ mark unused code with 'TODO: remove ...'

Change-Id: Ic45e541049e391e2853d29cd64bb0963bd9a2125
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25053
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
2021-02-26 17:27:13 +01:00
fe041bac0a after running isort
Change-Id: I6d7dbb8dee9480fc9242529089a1b40f17f068e7
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25052
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
07b758c3dd removed old style syntax
- removed secop/metaclass.py
- moved code from ModuleMeta to modules.HasAccessibles.__init_subclass__
- reworked properties:
  assignment obj.property = value now always allowed
- reworked Parameters and Command to be true descriptors
- Command must now be solely used as decorator
- renamed 'usercommand' to 'Command'
- command methods no longer start with 'do_'
- reworked mechanism to determine accessible order:
  the attribute paramOrder, if given, determines order of accessibles
+ fixed some issues makeing the IDE more happy
+ simplified code for StatusType and added a test for it

Change-Id: I8045cf38ee6f4d4862428272df0b12a7c8abaca7
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25049
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
f9a2152883 enhance documentation
- flatten hierarchy (some links do not work when using folders)
- add a tutorial for programming a simple driver
- clean description using inspect.cleandoc
+ fix a bug with 'unit' pseudo property in a Parameter used as override

Change-Id: I31ddba5d516d1ee5e785e28fbd79fca44ed23f5e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25000
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
25891f296d new syntax for parameter/commands/properties
New Syntax:

- define properties and parameters as class attributes directly
  instead of items in class attribute dicts
- define commands with decorator @usercommand(...)
- old syntax is still supported for now

still to do (with decreasing priority):
- turn parameters into descriptors (vs. creating getters/setters)
- migrate all existing code to new syntax
- get rid of or reduce code in metaclasses using __set_name__ and
  __init_subclass__ instead, including a fix for allowing py < 3.6

Change-Id: Id47e0f89c506f50c40fa518b01822c6e5bbf4e98
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/24991
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
0d1c7ba76f make arguments of Parameter and Override consistent
- allow (description and) datatype being positional args in Override
- disallow ctr and unit being a positional arg in Parameter
- disallow reorder being a positional arg in Override

Change-Id: Ic5711d091af11d5843943b0b2b31567127f8ed8c
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/24934
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
9afcc49430 improve softcal
- bugfix: stop searching for file on the first match
- allow to ignore the sign on input by abs (bool) parameter

Change-Id: I0e5544d7645f124d4c4ac720174b0f5bde7e71a6
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/24928
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
7895470301 main module of LS370 is now drivable
The main value of main module is the selected channel, it is 0
when pausing during scanning, and the status is busy.

+ cosmetics to make IDE more happy

Change-Id: I11d8f08ea67d25fb00f7492080b4a55efc124bfb
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/24927
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
9df43bb940 make order of accessibles work again
- when applying overrides with reorder=True, take ctr from Override,
  else copy from the cloned Accesible. This did not work properly
- reworked:
  - replaced CountedObj class by object_counter
  - accessibles created by a copy or by applying Overrides
    do not need fresh counted values
- adjusted tests

Change-Id: Id2fcf1ab1295aa1ea80ea81ae8cd02d36f86e969
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/24926
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 17:27:13 +01:00
l_samenv
ab558b3390 fixed README 2021-02-26 17:05:44 +01:00
l_samenv
fad330b71d fixed README
added a plan, how to keep mlz and local git in sync
2021-02-26 17:02:26 +01:00
l_samenv
3cc8db881e fixed ls370 issue when dwell time is too short 2021-02-26 16:13:22 +01:00
fa71b8ee25 added hook for optional history writer
- activated with envrionment variable FRAPPY_HISTORY
- using the (currently) private package 'frappyhistory'

Change-Id: I8f747b29d8311af677ed77268a4c38c8d71b08c2
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25064
Tested-by: Markus Zolliker <markus.zolliker@psi.ch>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 15:29:44 +01:00
dbc6f17e5e lookup cfg files in a list of directories
environment variable SECOP_CONFDIR may be a ':' separated
list of directories to lookup for cfg files

Change-Id: I058be6a270d3a3f6cd8ca45fdd4ab68c80fa5c23
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25063
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 15:29:44 +01:00
0c23ee46a1 remove obsolete code
- basic_validators is not needed any more since the implementation
  of datatypes.Stub
- client/baseclient.y is replaced by client/__init__.py both for
  the gui client and NICOS SECoP client
- lib/parsing.py used by baseclient only

Change-Id: I15b6ac880017000e155b8f6b7e2456e1bbf56dab
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25058
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-02-26 15:29:44 +01:00
d6cf1f7629 added ccu4 and mercury drivers
Change-Id: I566016e9972a33b94eff5025523206e9806c4b5c
2021-02-26 15:17:58 +01:00
41baf5805f migrated secop_psi drivers to new syntax
- includes all changes up to 'fix inheritance order' from git_mlz
  6a32ecf34224c559ae558efd7c0d20078d09463b

Change-Id: Ie3ceee3dbd0a9284b47b1d5b5dbe262eebe8f283
2021-02-25 14:01:54 +01:00
bc5edec06f enhance documentation
- flatten hierarchy (some links do not work when using folders)
+ fix a bug with the redorder flag in Override
+ allow removal of parameters
+ clean description using inspect.cleandoc

Change-Id: I3dde4f4cb29c46e8a21014f1fad7aa3ad610a1bf
2021-01-25 15:12:47 +01:00
e411ded55b worked on tutorial
Change-Id: I630e7379e35cc0146d58f9abe10cb19283191ca8
2021-01-21 08:42:43 +01:00
ad9defab0f changed doc html layout to alabaster
- make page width 100% of the window
- decrease code font size (seems to big compared to other text)

Change-Id: Id36dffea22163dcbd77303b0aab8c852371ef017
2021-01-21 08:41:17 +01:00
fbb0d10c55 fixed worst bugs in FG Lecryo driver
Change-Id: Iab6b7e0f0838a42f1a4f4b484745cc7dd7089c6b
2021-01-21 08:40:16 +01:00
bc33933a1a update doc
- add properties, parameters and commands to the doc string autoatically
- change names to "Frappy"
- started tutorial
- changed doc structure slightly

Change-Id: I87bef91384d138c738d12ddcf3a1de7f758a0973
2021-01-19 17:20:53 +01:00
2d310bc612 TupleOf and StructOf create multiple curves
the components of TupleOf and StructOf are storead as separate
curves in history

Change-Id: I42ebf84653408de7148796763a4d4ea9dd309696
2021-01-12 15:41:06 +01:00
e0f9b4a858 add history writer
Change-Id: I2d577dcf0c543c26680d157be959b0a608ace759
2020-12-10 17:04:41 +01:00
l_samenv
16834f8802 fix a bug softcal
- stop searching for files on the first match
2020-12-04 13:33:54 +01:00
l_samenv
d9650d7fc7 improve drivers for PPMS auxiliary equipment 2020-12-04 13:33:08 +01:00
l_samenv
569c0a3399 make arguments of Parameter and Override consistent
- allow description _and_ datatype being positional args
- disallow ctr, unit, reorder being positional
2020-12-04 13:28:04 +01:00
local SE user
cab2bb85ba [wip] next version of FG 2020-11-10 11:55:09 +01:00
l_samenv
2fb05b37f8 [WIP] driver for FG_Lecroy_3000
not yet working
2020-11-10 08:09:39 +01:00
l_samenv
ad2a79c312 SR_7270: autorange is an enum
- autorange may be off, soft or hard
2020-11-10 08:00:33 +01:00
l_samenv
82b4af4faa main module of LS370 is now drivable
- the main value is the channel
- it is busy when pausing during scanning
+ allow softcal to ignore the sign
2020-11-10 07:57:48 +01:00
ad07ecdd69 fix typos in secop/modules.py doc
Change-Id: Idfbb85603b5efd0884ae9356dd96136c9c32ada1
2020-10-28 10:09:17 +01:00
cf24bbc3c3 improved doc on softcal and Module.registerCallback
Change-Id: I12b1f7a2d29435d989fb9953f72bea181e6cb4f7
2020-10-28 09:59:40 +01:00
29c66fa19a describe branches in README.md
Change-Id: I5bec3d9177a14d618b982f9301a7f06a71a4a72e
2020-10-28 08:49:35 +01:00
25a887dcab fix initwrite behaviour
with handlers, a parameter from the cfg file which is not the
first of parameters with the same handler were not written.
fix: write_<param> method is called for all parameters in
<module>.writeDict even if there is no poll entry.

with this fix, when a parameter has the property initwrite=True,
the write_<param> method is called even when <param>
is not polled and even when <module>.pollerClass is None

Change-Id: I9b397deb5b20709fc4fa7c860c85b251a204c7f6
2020-10-28 08:35:01 +01:00
36ffb0a31f Merge branch 'mlz' into wip
Change-Id: I9dab1c32c4f0579f7f54bb68c60f7a8b14866652
2020-10-28 08:01:44 +01:00
b544d2af98 Merge branch 'master' into wip 2020-10-28 07:55:17 +01:00
l_samenv
5db1acb07c improvements on SR_7270 driver 2020-10-20 14:38:45 +02:00
l_samenv
880327c544 main ls370 module is now drivable
the value is the current channel, when the target (=channel) is changed,
the value changes to 0, until the switching has finished, including pause time
2020-10-20 14:17:24 +02:00
4f1883ba27 fix initwrite behaviour
with handlers, a parameter from the cfg file which is not the
first of parameters with the same handler were not written.
fix: write_<param> method is called for all parameters in
<module>.writeDict even if there is no poll entry.

with this fix, when a parameter has the property initwrite=True,
the write_<param> method is called even when <param>
is not polled and even when <module>.pollerClass is None

Change-Id: I9b397deb5b20709fc4fa7c860c85b251a204c7f6
2020-09-25 13:28:12 +02:00
3043200012 fix initwrite behaviour
with handlers, a parameter from the cfg file which is not the
first of parameters with the same handler were not written.
fix: write_<param> method is called for all parameters in
<module>.writeDict even if there is no poll entry.

with this fix, when a parameter has the property initwrite=True,
the write_<param> method is called even when <param>
is not polled and even when <module>.pollerClass is None

Change-Id: I9b397deb5b20709fc4fa7c860c85b251a204c7f6
2020-09-25 12:05:16 +02:00
l_samenv
1b4865c608 Revert "support name mangling for parameter/command names"
This reverts commit 99bdafdd0c3293d17e3f23508d2b7762804474e7.
2020-09-25 11:30:23 +02:00
l_samenv
f7576cf541 fix initwrite behaviour
with handlers, a parameter from the cfg file which is not the
first of parameters with the same handler were not written.
fix: write_<param> method is called for all parameters in
<module>.writeDict even if there is no poll entry.

with this fix, the write_<method> is called even when a parameter
is not polled.
2020-09-25 11:19:17 +02:00
l_samenv
587b170f6a update SR_7270 2020-09-10 15:47:04 +02:00
l_samenv
1c42859466 newset version of senis 2020-09-10 10:43:34 +02:00
l_samenv
1f832388d7 Merge branch 'wip' of git.psi.ch:sinqdev/frappy into wip 2020-09-08 13:37:01 +02:00
l_samenv
5f9344109d improve sea client 2020-09-08 13:36:11 +02:00
l_samenv
99bdafdd0c support name mangling for parameter/command names 2020-09-08 13:33:13 +02:00
l_samenv
ab21bb5e3f add timestamp to error reply 2020-09-08 13:32:18 +02:00
l_samenv
99e32065b1 simplyfy some error messages 2020-09-08 13:31:38 +02:00
l_samenv
c1ffc160a2 configurable search path for cfg files 2020-09-08 12:13:17 +02:00
89bf080dab fix typo
Change-Id: I578668ab179b9d95bb16a0103bb96c5f4a937133
2020-08-13 11:37:18 +02:00
047f3a7606 add a lot of current stuff
this is not (yet) in the frm2 repo

Change-Id: Ia5b2996803c3dbb15b85ab1bc3a24717ac6297fb
2020-08-13 11:33:14 +02:00
7f7c1a85ab improvements on PPMS and LS370
- PPMS: improved machanism for 10 K waiting
- LS370: fixed an issue with auto range
+ LS370: show test for all status bits

Change-Id: Ia6454141917893f0e5c6c4351df3a864942bb629
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/23495
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2020-08-13 11:33:14 +02:00
l_samenv
5aff4b9dab README: add a short description 2020-07-30 08:46:09 +02:00
l_samenv
2bd30c4423 test adding README 2020-07-30 08:42:44 +02:00
0641968715 add a lot of current stuff
this is not (yet) in the frm2 repo

Change-Id: Ia5b2996803c3dbb15b85ab1bc3a24717ac6297fb
2020-07-29 14:57:50 +02:00
d9a2045fca more flexible end_of_line in stringio
in the previous version, it was not possible to give a ASCII nul
character as end_of_line, because StringType refuses this

- end_of_line might be given as bytes, str or int
- end_of_line might be given as tuple (eol_read, eol_write)

Change-Id: I8b7942320ad3ffe162cdf3a673e113a66a84fb93
2020-07-23 16:12:14 +02:00
ab00c45db0 improvements on PPMS and LS370
- improved machanism for 10 K waiting
- fixed an issue with auto range

Change-Id: Ia6454141917893f0e5c6c4351df3a864942bb629
2020-07-07 15:08:28 +02:00
628 changed files with 83641 additions and 23777 deletions

View File

@ -1,2 +1,2 @@
SECoP playground for creating specification and testing one implementation.
Frappy framework for implementing SEC-nodes (see SECoP protocol on github).

7
.gitignore vendored
View File

@ -1,3 +1,4 @@
frappydemo.PID
log/*
html/*
*.pyc
@ -20,5 +21,9 @@ doc/_build
.coverage
._*
# jupyter
.ipynb_checkpoints/
*.ipynb
# pyinstaller
dist/
dist/

8
.isort.cfg Normal file
View File

@ -0,0 +1,8 @@
[settings]
multi_line_output=2
combine_as_imports=True
known_qt=frappy.gui.qt
known_core=frappy
sections=FUTURE,STDLIB,QT,THIRDPARTY,CORE,FIRSTPARTY,LOCALFOLDER

View File

@ -9,7 +9,7 @@
# Add <file or directory> to the black list. It should be a base name, not a
# path. You may set this option multiple times.
ignore = .git
ignore = .git,resources_qt5.py,resources_qt6.py
# Pickle collected data for later comparisons.
persistent=yes
@ -38,26 +38,23 @@ confidence=
# multiple time.
disable=missing-docstring
,locally-disabled
,locally-enabled
,fixme
,no-member
,bad-whitespace
,not-callable
,wrong-import-position
,ungrouped-imports
,import-self
,bad-continuation
,protected-access
,unused-argument
,duplicate-code
,attribute-defined-outside-init
,access-member-before-definition
,no-self-use
,broad-except
,unneeded-not
,unidiomatic-typecheck
,undefined-loop-variable
,redefined-variable-type
,deprecated-lambda
,consider-using-f-string
,use-dict-literal
[REPORTS]
@ -67,10 +64,6 @@ disable=missing-docstring
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
# Put messages in a separate file for each module / package specified on the
# command line instead of printing them on stdout. Reports (if any) will be
# written in a file name "pylint_global.[txt|html]".
files-output=no
# Tells whether to display a full report or only the messages
reports=no
@ -93,14 +86,11 @@ dummy-variables-rgx=_|dummy
# List of additional names supposed to be defined in builtins. Remember that
# you should avoid to define new builtins when possible.
additional-builtins=
additional-builtins=Node,Mod,Param,Command,Group
[BASIC]
# List of builtins function names that should not be used, separated by a comma
#bad-functions=map,filter,apply,input
bad-functions=apply,input
# Regular expression which should only match correct module names
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9_]+))$
@ -155,14 +145,8 @@ notes=FIXME,XXX,TODO
# Maximum number of characters on a single line.
max-line-length=132
# List of optional constructs for which whitespace checking is disabled. `dict-
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
# `empty-line` allows space-only lines.
no-space-check=trailing-comma,dict-separator
# Maximum number of lines in a module
max-module-lines=1200
max-module-lines=1000
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
# tab).
@ -212,13 +196,16 @@ max-locals=50
max-returns=10
# Maximum number of branch for function / method body
max-branches=40
max-branches=50
# Maximum number of statements in function / method body
max-statements=150
# Maximum number of parents for a class (see R0901).
max-parents=10
max-parents=20
# Maximum number of positional arguments
max-positional-arguments=10
# Maximum number of attributes for a class (see R0902).
max-attributes=50

View File

@ -3,12 +3,18 @@
all: clean doc
# Make spawns a new shell for each command.
# Save each PID in temporary file
# sleep in order for "test" to have started reliably
demo:
@bin/secop-server -q demo &
@bin/secop-server -q test &
@bin/secop-server -q cryo &
@bin/secop-gui localhost:10767 localhost:10768 localhost:10769
@ps aux|grep [s]ecop-server|awk '{print $$2}'|xargs kill
@rm -f frappydemo.PID || true
@{ bin/frappy-server -q demo & echo $$! >> frappydemo.PID; }
@{ bin/frappy-server -q test & echo $$! >> frappydemo.PID; }
@{ bin/frappy-server -q cryo & echo $$! >> frappydemo.PID; }
@sleep 0.2
@bin/frappy-gui localhost:10767 localhost:10768 localhost:10769
@cat frappydemo.PID | xargs kill || true
@rm frappydemo.PID
build:
python3 setup.py build
@ -32,18 +38,18 @@ test-verbose:
python3 $(shell which pytest) -v test -s
test-coverage:
python3 $(shell which pytest) -v test --cov=secop
python3 $(shell which pytest) -v test --cov=frappy
doc:
$(MAKE) -C doc html
lint:
pylint -j 0 -f colorized -r n --rcfile=.pylintrc secop secop_* test
pylint -f colorized -r n --rcfile=.pylintrc frappy frappy_* test
isort:
@find test -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find secop -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find . -wholename './secop_*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find frappy -name '*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
@find . -wholename './frappy_*.py' -print0 | xargs -0 isort -e -m 2 -w 80 -ns __init__.py
release-patch:
MODE="patch" $(MAKE) release
@ -55,8 +61,8 @@ release-major:
MODE="major" $(MAKE) release
release:
ssh jenkinsng.admin.frm2 -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -3 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline
ssh jenkins.admin.frm2.tum.de -p 29417 build -v -s -p GERRIT_PROJECT=$(shell git config --get remote.origin.url | rev | cut -d '/' -f -2 | rev) -p ARCH=all -p MODE=$(MODE) ReleasePipeline
build-pkg:
debocker build --image jenkinsng.admin.frm2:5000/mlzbase/buster
debocker build --image docker.ictrl.frm2.tum.de:5443/mlzbase/buster

62
README.md Normal file
View File

@ -0,0 +1,62 @@
# Frappy Framework
current running code at SINQ, with newest changes not yet pushed
through the Gerrit workflow at MLZ
## Branches
branches:
- mlz: master from forge.frm2.tum.de:29418/sine2020/secop/playground
this is not present at git.psi.ch:sinqdev/frappy.git!
- master: the last synced state between mlz and wip/work, except an added README.md
(this does NOT contain local repo files only, however, all common files work/mlz should match)
- core: the modifications of the core frappy parts (to be going through gerrit)
- work: current working version, usually in use on /home/l_samenv/frappy (and on neutron instruments)
this should be a copy of an earlier state of the wip branch
- wip: current test version, usually in use on /home/l_samenv/frappy_wip
IMPORTANT: make commits containing either only files to be pushed to Gerrit or only
PSI internal files, not mixed. Mark local commits with '[PSI]' in the commit message.
master --> mlz # these branches match after a sync step, but they might have a different history
master --> work --> wip
apply commits from mlz to master: (rebase ?) or use cherry-pick:
git cherry-pick <sha1>..<sha2>
where sha1 is the last commit already in wip, and sha2 ist the last commit to be applied
(for a single commit <sha1>.. may be omitted)
the wip branch is also present in an other directory (currently zolliker/switchdrive/gitmlz/frappy),
where commits may be cherry picked for input to Gerrit. As generally in the review process some additional
changes are done, eventually a sync step should happen:
1) ideally, this is done when work and wip match
2) make sure branches mlz, master, wip and work are in syns with remote, push/pull otherwise
3) cherry-pick commits from mlz to master
4) make sure master and mlz branches match (git diff --name-only master..wip should only return README.md)
5) create branch new_work from master
6) go through commits in wip and sort out:
- core commits already pushed through gerrit are skipped
- all other commits are to be cherry-picked
7) when arrived at the point where the new working version should be,
copy new_wip branch to work with 'git checkout -B work'.
Not sure if this works, as work is to be pushed to git.psi.ch.
We might first remove the remote branch with 'git push origin --delete work'.
And then create again (git push origin work)?
8) continue with (6) if wip and work should differ, and do like (7) for wip branch
9) delete new_wip branch, push master, wip and work branches
## Procedure to update PPMS
1) git checkout wip (or work, whatever state to copy to ppms)
2) git checkout -B ppms # local branch ?
3) assume PPMSData is mounted on /Volumes/PPMSData
cp -r secop_psi /Volumes/PPMSData/zolliker/frappy/secop_psi
cp -r secop /Volumes/PPMSData/zolliker/frappy/secop
it may be that additional folder have to copied ...

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
# Copyright (c) 2015-2024 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
@ -29,8 +29,11 @@ from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.gui.qt import QApplication
from secop.gui.cfg_editor.mainwindow import MainWindow
import logging
from mlzlog import ColoredConsoleHandler
from frappy.gui.qt import QApplication
from frappy.gui.cfg_editor.mainwindow import MainWindow
def main(argv=None):
@ -38,9 +41,13 @@ def main(argv=None):
parser.add_argument('-f', '--file', help='Configuration file to open.')
args = parser.parse_args()
app = QApplication(argv)
window = MainWindow(args.file)
logger = logging.getLogger('gui')
console = ColoredConsoleHandler()
console.setLevel(logging.INFO)
logger.addHandler(console)
window = MainWindow(args.file, log=logger)
window.show()
return app.exec_()
return app.exec()
if __name__ == '__main__':

66
bin/frappy-cli Executable file
View File

@ -0,0 +1,66 @@
#!/usr/bin/env python3
# *****************************************************************************
# Copyright (c) 2015-2024 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Alexander Lenz <alexander.lenz@frm2.tum.de>
# Markus Zolliker <markus.zolliker@psi.ch>
#
# *****************************************************************************
import sys
import argparse
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import init, run, clientenv, interact
def parseArgv(argv):
parser = argparse.ArgumentParser()
parser.add_argument('-i', '--include',
help='file to execute after connecting to the clients', metavar='file',
type=Path, action='append', default=[])
parser.add_argument('-o', '--only-execute',
help='Do not go into interactive mode after executing files. \
Has no effect without --include.', action='store_true')
parser.add_argument('node',
help='Nodes the client should connect to.\n', metavar='host:port',
nargs='*', type=str, default=[])
return parser.parse_args(argv)
args = parseArgv(sys.argv[1:])
success = init(*args.node)
run_error = ''
file_success = False
try:
for file in args.include:
run(file)
file_success = True
except Exception as e:
run_error = f'\n{clientenv.short_traceback()}'
if success:
if args.include and file_success and args.only_execute:
print('skipping interactive mode')
exit()
interact(run_error)

82
bin/frappy-gui Executable file
View File

@ -0,0 +1,82 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# *****************************************************************************
# Copyright (c) 2015-2024 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Alexander Lenz <alexander.lenz@frm2.tum.de>
#
# *****************************************************************************
from __future__ import print_function
import sys
import argparse
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
import logging
from mlzlog import ColoredConsoleHandler
from frappy.gui.qt import QApplication
from frappy.gui.mainwindow import MainWindow
def parseArgv(argv):
parser = argparse.ArgumentParser()
loggroup = parser.add_mutually_exclusive_group()
loggroup.add_argument('-d', '--debug',
help='Enable debug output',
action='store_true', default=False)
loggroup.add_argument('-q', '--quiet',
help='Supress everything but errors',
action='store_true', default=False)
parser.add_argument('-D', '--detailed',
help='Start in detailed mode',
action='store_true', default=False)
parser.add_argument('node',
help='Nodes the GUI should connect to.\n', metavar='host[:port]',
nargs='*', type=str, default=[])
return parser.parse_args(argv)
def main(argv=None):
if argv is None:
argv = sys.argv
args = parseArgv(argv[1:])
loglevel = logging.DEBUG if args.debug else (logging.ERROR if args.quiet else logging.INFO)
logger = logging.getLogger('gui')
logger.setLevel(logging.DEBUG)
if sys.stdout is not None:
console = ColoredConsoleHandler()
console.setLevel(loglevel)
logger.addHandler(console)
app = QApplication(argv, organizationName='frappy', applicationName='frappy_gui')
win = MainWindow(args, logger)
app.aboutToQuit.connect(win._onQuit)
win.show()
return app.exec()
if __name__ == '__main__':
sys.exit(main(sys.argv))

42
bin/frappy-play Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env python3
# *****************************************************************************
# Copyright (c) 2015-2024 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Markus Zolliker <markus.zolliker@psi.ch>
#
# *****************************************************************************
import sys
from pathlib import Path
from frappy.lib import generalConfig
from frappy.logging import logger
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Console
from frappy.playground import play, USAGE
generalConfig.init()
logger.init()
if len(sys.argv) > 1:
play(sys.argv[1])
else:
print(USAGE)
Console('play', sys.modules['__main__'].__dict__)

139
bin/frappy-scan Executable file
View File

@ -0,0 +1,139 @@
#!/usr/bin/env python3
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Alexander Zaft <a.zaft@fz-juelich.de>
#
# *****************************************************************************
"""SEC node autodiscovery tool."""
import argparse
import json
import os
import select
import socket
import sys
from collections import namedtuple
from time import time as currenttime
UDP_PORT = 10767
Answer = namedtuple('Answer',
'address, port, equipment_id, firmware, description')
def decode(msg, addr):
msg = msg.decode('utf-8')
try:
data = json.loads(msg)
except Exception:
return None
if not isinstance(data, dict):
return None
if data.get('SECoP') != 'node':
return None
try:
eq_id = data['equipment_id']
fw = data['firmware']
desc = data['description']
port = data['port']
except KeyError:
return None
addr, _scanport = addr
return Answer(addr, port, eq_id, fw, desc)
def print_answer(answer, *, short=False):
try:
hostname = socket.gethostbyaddr(answer.address)[0]
address = hostname
numeric = f' ({answer.address})'
except Exception:
address = answer.address
numeric = ''
if short:
# NOTE: keep this easily parseable!
print(f'{answer.equipment_id} {address}:{answer.port}')
return
print(f'Found {answer.equipment_id} at {address}{numeric}:')
print(f' Port: {answer.port}')
print(f' Firmware: {answer.firmware}')
desc = answer.description.replace('\n', '\n ')
print(f' Node description: {desc}')
print('-' * 80)
def scan(max_wait=1.0):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
# send a general broadcast
try:
s.sendto(json.dumps(dict(SECoP='discover')).encode('utf-8'),
('255.255.255.255', UDP_PORT))
except OSError as e:
print('could not send the broadcast:', e)
# we still keep listening for self-announcements
start = currenttime()
seen = set()
while currenttime() < start + max_wait:
res = select.select([s], [], [], 0.1)
if res[0]:
try:
msg, addr = s.recvfrom(1024)
except socket.error: # pragma: no cover
continue
answer = decode(msg, addr)
if answer is None:
continue
if (answer.address, answer.equipment_id, answer.port) in seen:
continue
seen.add((answer.address, answer.equipment_id, answer.port))
yield answer
def listen(*, short=False):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
if os.name == 'nt':
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
else:
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
s.bind(('0.0.0.0', UDP_PORT))
while True:
try:
msg, addr = s.recvfrom(1024)
except KeyboardInterrupt:
break
answer = decode(msg, addr)
if answer:
print_answer(answer, short=short)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('-l', '--listen', action='store_true',
help='Keep listening after the broadcast.')
parser.add_argument('-s', '--short', action='store_true',
help='Print short info (always on when listen).')
args = parser.parse_args(sys.argv[1:])
short = args.listen or args.short
if not short:
print('-' * 80)
for answer in scan():
print_answer(answer, short=short)
if args.listen:
listen(short=short)

View File

@ -1,6 +1,5 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
@ -23,21 +22,28 @@
#
# *****************************************************************************
import sys
import argparse
from os import path
import mlzlog
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from secop.lib import getGeneralConfig
from secop.server import Server
from frappy.lib import generalConfig
from frappy.logging import logger
from frappy.server import Server
def parseArgv(argv):
parser = argparse.ArgumentParser(description="Manage a SECoP server")
parser = argparse.ArgumentParser(
description="Manage a SECoP server",
epilog="""The server needs some configuration, by default from the
generalConfig.cfg file. the keys confdir, logdir and piddir have to
be set.
Alternatively, one can set the environment variables FRAPPY_CONFDIR
FRAPPY_LOGDIR and FRAPPY_PIDDIR to set the required values.
"""
)
loggroup = parser.add_mutually_exclusive_group()
loggroup.add_argument("-v", "--verbose",
help="Output lots of diagnostic information",
@ -60,15 +66,27 @@ def parseArgv(argv):
parser.add_argument('-c',
'--cfgfiles',
action='store',
help="comma separated list of cfg files\n"
"defaults to <name_of_the_instance>\n"
"cfgfiles given without '.cfg' extension are searched in the configuration directory,"
"else they are treated as path names",
help="comma separated list of cfg files,\n"
"defaults to <name_of_the_instance>.\n"
"If a config file contains a slash, it is treated as a"
"path, otherwise the file is searched for in the "
"configuration directory.",
default=None)
parser.add_argument('-g',
'--gencfg',
action='store',
help="full path of general config file,\n"
"defaults to env. variable FRAPPY_CONFIG_FILE\n",
default=None)
parser.add_argument('-t',
'--test',
action='store_true',
help='Check cfg files only',
help='check cfg files only',
default=False)
parser.add_argument('-r',
'--relaxed',
action='store_true',
help='no checking of problematic behaviour',
default=False)
return parser.parse_args(argv)
@ -80,17 +98,21 @@ def main(argv=None):
args = parseArgv(argv[1:])
loglevel = 'debug' if args.verbose else ('error' if args.quiet else 'info')
mlzlog.initLogging('secop', loglevel, getGeneralConfig()['logdir'])
generalConfig.set_default('lazy_number_validation', args.relaxed)
generalConfig.set_default('legacy_hasiodev', args.relaxed)
generalConfig.set_default('tolerate_poll_property', args.relaxed)
generalConfig.init(args.gencfg)
logger.init(loglevel)
srv = Server(args.name, mlzlog.log, cfgfiles=args.cfgfiles, interface=args.port, testonly=args.test)
cfgfiles = [s.strip() for s in args.cfgfiles.split(',')] if args.cfgfiles else None
srv = Server(args.name, logger.log, cfgfiles=cfgfiles,
interface=args.port, testonly=args.test)
if args.daemonize:
srv.start()
else:
try:
srv.run()
except KeyboardInterrupt:
pass
srv.run()
if __name__ == '__main__':

View File

@ -1,64 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
#
# *****************************************************************************
import os
from os import path
import markdown
BASE_PATH = path.abspath(path.join(path.dirname(__file__), '..'))
DOC_SRC = path.join(BASE_PATH, 'doc')
DOC_DST = path.join(BASE_PATH, 'html')
conv = markdown.Markdown()
for dirpath, dirnames, filenames in os.walk(DOC_SRC):
# re-create the dir-structure of DOC_SRC into DOC_DST
dst_path = path.join(DOC_DST, path.relpath(dirpath, DOC_SRC))
try:
os.mkdir(dst_path)
except OSError:
pass
for fn in filenames:
full_name = path.join(dirpath, fn)
sub_name = path.relpath(full_name, DOC_SRC)
final_name = path.join(DOC_DST, sub_name)
if not fn.endswith('md'):
# just copy everything else
with open(full_name, 'rb') as fi:
with open(final_name, 'wb') as fo:
# WARNING: possible Memory hog!
fo.write(fi.read())
continue
# treat .md files special
final_sub_name = path.splitext(sub_name)[0] + '.html'
final_name = path.join(DOC_DST, final_sub_name)
print("Converting %s to %s" %(sub_name, final_sub_name))
# transform one file
conv.reset()
conv.convertFile(input=full_name,
output=final_name,
encoding="utf-8")

50
bin/peus-plot Executable file
View File

@ -0,0 +1,50 @@
#!/usr/bin/env python3
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Client
from frappy_psi.iqplot import Plot
import numpy as np
import matplotlib.pyplot as plt
if len(sys.argv) < 2:
print('Usage: peus-plot <maxY>')
def get_modules(name):
return list(filter(None, (globals().get(name % i) for i in range(10))))
secnode = Client('pc13252:5000')
time_size = {'time', 'size'}
int_mods = [u] + get_modules('roi%d')
t_rois = get_modules('roi%d')
i_rois = get_modules('roi%di')
q_rois = get_modules('roi%dq')
if len(sys.argv) > 1:
maxy = float(sys.argv[1])
else:
maxy = 0.02
iqplot = Plot(maxy)
for i in range(99):
pass
try:
while True:
curves = np.array(u.get_curves())
iqplot.plot(curves,
rois=[(r.time - r.size * 0.5, r.time + r.size * 0.5) for r in int_mods],
average=([r.time for r in t_rois],
[r.value for r in i_rois],
[r.value for r in q_rois]))
if not iqplot.pause(0.5):
break
except KeyboardInterrupt:
iqplot.close()

View File

@ -1,76 +0,0 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
#
# *****************************************************************************
import sys
import argparse
from os import path
# Path magic to make python find our stuff.
# also remember our basepath (for etc, pid lookup, etc)
basepath = path.abspath(path.join(sys.path[0], '..'))
etc_path = path.join(basepath, 'etc')
pid_path = path.join(basepath, 'pid')
log_path = path.join(basepath, 'log')
# sys.path[0] = path.join(basepath, 'src')
sys.path[0] = basepath
# do not move above!
import mlzlog
from secop.client.console import ClientConsole
def parseArgv(argv):
parser = argparse.ArgumentParser(description="Connect to a SECoP server")
loggroup = parser.add_mutually_exclusive_group()
loggroup.add_argument("-v", "--verbose",
help="Output lots of diagnostic information",
action='store_true', default=False)
loggroup.add_argument("-q", "--quiet", help="suppress non-error messages",
action='store_true', default=False)
parser.add_argument("name",
type=str,
help="Name of the instance.\n"
" Uses etc/name.cfg for configuration\n",)
return parser.parse_args()
def main(argv=None):
if argv is None:
argv = sys.argv
args = parseArgv(argv[1:])
loglevel = 'debug' if args.verbose else ('error' if args.quiet else 'info')
mlzlog.initLogging('console', loglevel, log_path)
console = ClientConsole(args.name, basepath)
try:
console.run()
except KeyboardInterrupt:
console.close()
if __name__ == '__main__':
sys.exit(main(sys.argv))

174
bin/secop-convert Executable file
View File

@ -0,0 +1,174 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Enrico Faulhaber <enrico.faulhaber@frm2.tum.de>
# Alexander Lenz <alexander.lenz@frm2.tum.de>
#
# *****************************************************************************
import sys
from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.lib import generalConfig
from secop.logging import logger
from secop.server import Server
from secop.core import Attached
from secop.lib.enum import EnumMember
def rep(value):
if isinstance(value, EnumMember):
return repr(value.name)
return repr(value)
def guess(value):
try:
return '%.16g' % float(value)
except (TypeError, ValueError):
return rep(value)
def triplequote(description):
if '\n' in description:
return "'''%s'''" % '\n '.join(description.split('\n'))
else:
return repr(description)
def get_value(modobj, pname, value):
prop = modobj.propertyDict.get(pname)
if isinstance(prop, Attached):
return value
clsname = type(modobj).__qualname__
if pname in {'extra_modules', 'single_module', 'rel_paths', 'json_file'} and clsname.startswith('Sea'):
return value.split()
if pname == 'extra_params' and clsname.startswith('Sim'):
return [v.strip() for v in value.split(',')]
if pname == 'remote_class' and type(modobj).__bases__[0].__name__.startswith('Proxy'):
return value
return getattr(modobj, pname)
generalConfig.defaults = {k: True for k in (
'lazy_number_validation', 'disable_value_range_check', 'legacy_hasiodev', 'tolerate_poll_property')}
generalConfig.init()
logger.init('off')
def main(cfgs):
stats = {}
for name in cfgs:
try:
content = []
srv = Server(name, logger.log, cfgfiles=name, interface=5000, testonly=True)
if srv.node_cfg.get('class') is not None:
stats[name] = 'skip router'
continue
if 'FRAPPY' in srv.module_cfg:
stats[name] = 'skip genconfig'
continue
for modname, params in srv.module_cfg.items():
classname = params['class']
if classname == 'secop_psi.sea.SeaClient':
params['uri'] = 'none'
if 'iodev' in params:
params['io'] = params.pop('iodev')
if '.iodev' in params:
params['io'] = params.pop('.iodev')
node = dict(srv.node_cfg)
if 'description' in node:
content.append('Node(%r,\n %s,' % (node.pop('id'), triplequote(node.pop('description'))))
interface = srv.interface_cfg.get('uri')
if interface:
content.append(' interface=%r,' % interface)
for k, v in node.items():
content.append(' %s=%s,' % (k, guess(v)))
content.append(')\n')
errors = srv._processCfg()
if errors:
content = ['# %s' % e[:120] for e in errors] + content
stats[name] = ', '.join(errors[:2])
for modname, modcfg in srv.module_cfg.items():
modobj = srv.dispatcher._modules.get(modname)
classname = modcfg.pop('class')
content.append('Mod(%r,\n %r,' % (modname, classname))
description = modcfg.pop('description', None)
if description is not None:
content.append(' %s,' % triplequote(description))
result = {}
for key, value in modcfg.items():
pname, _, prop = key.partition('.')
if not pname:
pname, prop = prop, ''
elif pname == 'uri' and value == 'none':
continue
if prop:
pobj = modobj.parameters[pname] if modobj else None
if pobj:
try:
propvalue = rep(getattr(pobj, prop))
except AttributeError:
propvalue = rep(getattr(pobj.datatype, prop))
else:
propvalue = guess(value)
else:
prop = 'value'
if modobj:
propvalue = rep(get_value(modobj, pname, value))
else:
propvalue = guess(value)
result.setdefault(pname, {})[prop] = propvalue
undef = object()
for pname, cfg in result.items():
value = cfg.pop('value', undef)
if not cfg:
content.append(' %s=%s,' % (pname, value))
else:
args = ['%s=%s' % kv for kv in cfg.items()]
if value is not undef:
args.insert(0, value)
joined = ' '.join(args)
head = ' %s=Param(' % pname
if len(joined) < 8:
content.append('%s%s),' % (head, ', '.join(args)))
else:
content.append('%s\n %s,\n ),' % (head, ',\n '.join(args)))
content.append(')\n')
with open('%s' % name.replace('.cfg', '_cfg.py'), 'w') as f:
f.write('\n'.join(content))
stats[name] = '*' if name in stats else ''
except KeyboardInterrupt:
break
except BaseException as e:
stats[name] = repr(e)
if len(cfgs) == 1:
raise
if len(cfgs) > 1:
with open('convert.log', 'w') as f:
f.write('\n'.join('%s: %s' % kv for kv in stats.items())+'\n')
if __name__ == '__main__':
main(sys.argv[1:])

View File

@ -1,71 +0,0 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
# Copyright (c) 2015-2016 by the authors, see LICENSE
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Alexander Lenz <alexander.lenz@frm2.tum.de>
#
# *****************************************************************************
from __future__ import print_function
import sys
from os import path
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
import mlzlog
from secop.gui.qt import QApplication
from secop.gui.mainwindow import MainWindow
def main(argv=None):
if argv is None:
argv = sys.argv
if '-h' in argv or '--help' in argv:
print("Usage: secop-gui [-d] [-h] [host:[port]]")
print()
print("Option GNU long option Meaning")
print("-h --help Show this message")
print("-d --debug Enable debug output")
print()
print("if not given, host defaults to 'localhost' and port to 10767")
sys.exit(0)
if '-d' in argv or '--debug' in argv:
mlzlog.initLogging('gui', 'debug')
else:
mlzlog.initLogging('gui', 'info')
app = QApplication(argv)
hosts = [host for host in argv[1:] if not host.startswith('-')]
if not hosts:
hosts = ['localhost:10767']
win = MainWindow(hosts)
win.show()
return app.exec_()
if __name__ == '__main__':
sys.exit(main(sys.argv))

197
bin/sim-server Executable file
View File

@ -0,0 +1,197 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# *****************************************************************************
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Markus Zolliker <markus.zolliker@psi.ch>
# *****************************************************************************
"""server for a string communicator
Usage:
bin/sim-server <communicator class> -p <server port> [-o <option1>=<value> <option2>=<value>]
open a server on <server port> to communicate with the string based <communicator> over TCP/IP.
Use cases, mainly for test purposes:
- relay to a hardware simulation written as a communicator
> bin/sim-server frappy_psi.ls370sim.Ls370Sim
- relay to a communicator not using TCP/IP, if Frappy should run on an other host
> bin/sim-server frappy.io.StringIO -o uri=serial:///dev/tty...
- as a T, if the hardware allows only one connection, and more than one is needed:
> bin/sim-server frappy.io.StringIO -o uri=tcp://<host>:<port>
typically using communicator class frappy.io.StringIO
"""
import sys
import argparse
from pathlib import Path
import socket
import time
import os
from ast import literal_eval
from socketserver import BaseRequestHandler, ThreadingTCPServer
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.lib import get_class, formatException, mkthread
class Logger:
def debug(self, *args):
pass
def log(self, level, *args):
pass
def info(self, *args):
print(*args)
exception = error = warn = info
class TcpRequestHandler(BaseRequestHandler):
def setup(self):
print(f'connection opened from {self.client_address}')
self.running = True
self.request.settimeout(1)
self.data = b''
def finish(self):
"""called when handle() terminates, i.e. the socket closed"""
# close socket
try:
self.request.shutdown(socket.SHUT_RDWR)
except Exception:
pass
finally:
print(f'connection closed from {self.client_address}')
self.request.close()
def poller(self):
while True:
time.sleep(1.0)
self.module.doPoll()
def handle(self):
"""handle a new connection"""
# do a copy of the options, as they are consumed
self.module = self.server.modulecls(
'mod', Logger(), dict(self.server.options), self.server)
self.module.earlyInit()
mkthread(self.poller)
while self.running:
try:
newdata = self.request.recv(1024)
if not newdata:
return
except socket.timeout:
# no new data during read, continue
continue
self.data += newdata
while self.running:
message, sep, self.data = self.data.partition(b'\n')
if not sep:
break
cmd = message.decode('latin-1')
try:
reply = self.module.communicate(cmd.strip())
if self.server.verbose:
print('%-40s | %s' % (cmd, reply))
except Exception:
print(formatException(verbose=True))
return
outdata = reply.encode('latin-1') + b'\n'
try:
self.request.sendall(outdata)
except Exception as e:
print(repr(e))
self.running = False
class Server(ThreadingTCPServer):
allow_reuse_address = os.name != 'nt' # False on Windows systems
class Dispatcher:
def announce_update(self, *_):
pass
def announce_update_error(self, *_):
pass
def __init__(self, port, modulecls, options, verbose=False):
super().__init__(('', port), TcpRequestHandler,
bind_and_activate=True)
self.secnode = None
self.dispatcher = self.Dispatcher()
self.verbose = verbose
self.modulecls = get_class(modulecls)
self.options = options
print(f'started sim-server listening on port {port}')
def parse_argv(argv):
parser = argparse.ArgumentParser(description="Relay to a communicator (simulated HW or other)")
parser.add_argument("-v", "--verbose",
help="output full communication",
action='store_true', default=False)
parser.add_argument("cls",
type=str,
help="communicator class.\n",)
parser.add_argument('-p',
'--port',
action='store',
help='server port or uri',
default=2089)
parser.add_argument('-o',
'--options',
action='store',
nargs='*',
help='options in the form key=value',
default=None)
return parser.parse_args(argv)
def main(argv=None):
if argv is None:
argv = sys.argv
args = parse_argv(argv[1:])
options = {'description': ''}
for item in args.options or ():
key, eq, value = item.partition('=')
if not eq:
raise ValueError(f"missing '=' in {item}")
try:
value = literal_eval(value)
except Exception:
pass
options[key] = value
srv = Server(int(args.port), args.cls, options, args.verbose)
srv.serve_forever()
if __name__ == '__main__':
sys.exit(main(sys.argv))

View File

@ -1,154 +0,0 @@
#!/usr/bin/env python3
# pylint: disable=invalid-name
# -*- coding: utf-8 -*-
# *****************************************************************************
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Module authors:
# Markus Zolliker <markus.zolliker@psi.ch>
# *****************************************************************************
"""server for a string communicator
Usage:
bin/stringio-server <communciator> <server port>
open a server on <server port> to communicate with the string based <communicator> over TCP/IP.
Use cases, mainly for test purposes:
- as a T, if the hardware allows only one connection, and more than one is needed
- relay to a communicator not using TCP/IP, if Frappy should run on an other host
- relay to a hardware simulation written as a communicator
"""
import sys
from os import path
import asyncore
import socket
import ast
# Add import path for inplace usage
sys.path.insert(0, path.abspath(path.join(path.dirname(__file__), '..')))
from secop.lib import get_class, formatException
class LineHandler(asyncore.dispatcher_with_send):
def __init__(self, sock):
self.buffer = b""
asyncore.dispatcher_with_send.__init__(self, sock)
self.crlf = 0
def handle_read(self):
data = self.recv(8192)
if data:
parts = data.split(b"\n")
if len(parts) == 1:
self.buffer += data
else:
self.handle_line((self.buffer + parts[0]).decode('latin_1'))
for part in parts[1:-1]:
if part[-1] == b"\r":
self.crlf = True
part = part[:-1]
else:
self.crlf = False
self.handle_line(part.decode('latin_1'))
self.buffer = parts[-1]
def send_line(self, line):
self.send((line + ("\r\n" if self.crlf else "\n")).encode('latin_1'))
class LineServer(asyncore.dispatcher):
def __init__(self, host, port, lineHandlerClass):
asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind((host, port))
self.listen(5)
self.lineHandlerClass = lineHandlerClass
def handle_accept(self):
pair = self.accept()
if pair is not None:
sock, addr = pair
print("Incoming connection from %s" % repr(addr))
self.lineHandlerClass(sock)
def loop(self):
asyncore.loop()
class Server(LineServer):
class Dispatcher:
def announce_update(self, *_):
pass
def announce_update_error(self, *_):
pass
def __init__(self, *args, **kwds):
super().__init__(*args, **kwds)
self.dispatcher = self.Dispatcher()
class Handler(LineHandler):
def handle_line(self, line):
try:
reply = module.do_communicate(line.strip())
if verbose:
print('%-40s | %s' % (line, reply))
except Exception:
print(formatException(verbose=True))
self.send_line(reply)
class Logger:
def debug(self, *args):
print(*args)
info = exception = debug
opts = {'description': 'simulator'}
args = []
for arg in sys.argv[1:]:
k, sep, v = arg.partition('=')
if not k:
args.append(v)
try:
v = ast.literal_eval(v)
except Exception:
pass
opts[k] = v
verbose = opts.pop('verbose', False)
opts['cls'] = 'secop_psi.ls370sim.Ls370Sim'
opts['port'] = 4567
if len(args) > 2:
raise ValueError('do not know about: %s' % ' '.join(args[2:]))
if len(args) == 2:
opts['port'] = int(args[1])
if len(args) > 0:
opts['cls'] = args[0]
args.append(opts)
cls = opts.pop('cls')
port = opts.pop('port')
srv = Server('localhost', int(port), Handler)
module = get_class(cls)(cls, Logger(), opts, srv)
module.earlyInit()
srv.loop()

65
bin/us-plot Executable file
View File

@ -0,0 +1,65 @@
#!/usr/bin/env python3
import sys
from pathlib import Path
# Add import path for inplace usage
sys.path.insert(0, str(Path(__file__).absolute().parents[1]))
from frappy.client.interactive import Client
import numpy as np
import matplotlib.pyplot as plt
from frappy_psi.iqplot import Pause
if len(sys.argv) < 2:
print("""
Usage:
us-plot <end> [<start> [<npoints>]]
end: end of window [ns]
start: start of window [n2], default: 0
npoints: number fo points (default 1000)
""")
sys.exit(0)
Client('pc13252:5000')
def plot(array, ax, style, xs):
xaxis = np.arange(len(array)) * xs
return ax.plot(xaxis, array, style)[0]
def update(array, line, xs):
xaxis = np.arange(len(array)) * xs
line.set_data(np.array([xaxis, array]))
def on_close(event):
sys.exit(0)
start = 0
end = float(sys.argv[1])
npoints = 1000
if len(sys.argv) > 2:
start = float(sys.argv[2])
if len(sys.argv) > 3:
npoints = float(sys.argv[3])
fig, ax = plt.subplots(figsize=(15,3))
pause = Pause(fig)
try:
get_signal = iq.get_signal
print('plotting RUS signal')
except NameError:
get_signal = u.get_signal
print('plotting PE signal')
xs, signal = get_signal(start, end, npoints)
lines = [plot(s, ax, '-', xs) for s in signal]
while pause(0.5):
plt.draw()
xs, signal = get_signal(start, end, npoints)
for line, sig in zip(lines, signal):
update(sig, line, xs)

22
calibtest.py Normal file
View File

@ -0,0 +1,22 @@
import sys
import os
from glob import glob
from frappy_psi.calcurve import CalCurve
os.chdir('/Users/zolliker/gitpsi/calcurves')
if len(sys.argv) > 1:
calib = sys.argv[1]
c = CalCurve(calib)
else:
for file in sorted(glob('*.*')):
if file.endswith('.md') or file.endswith('.std'):
continue
try:
c = CalCurve(file)
xy = c.export()
print('%9.4g %12.7g %9.4g %9.4g %s' % (tuple(c.extx) + tuple(c.exty) + (file,)))
except Exception as e:
print(file, e)
calib = file

87
cfg/PEUS_cfg.py Normal file
View File

@ -0,0 +1,87 @@
Node('PEUS.psi.ch',
'ultrasound, pulse_echo configuration',
interface='5000',
)
Mod('u',
'frappy_psi.ultrasound.PulseEcho',
'ultrasound acquisition loop',
freq='f',
# pollinterval=0.1,
time=900.0,
size=5000.0,
nr=500,
sr=32768,
bw=1e7,
)
Mod('fio',
'frappy_psi.ultrasound.FreqStringIO', '',
uri='serial:///dev/ttyS1?baudrate=57600',
)
Mod('f',
'frappy_psi.ultrasound.Frequency',
'writable for frequency',
output='R', # L for LF (bnc), R for RF (type N)
io='fio',
amp=0.5, # VPP
)
Mod('fdif',
'frappy_psi.ultrasound.FrequencyDif',
'writable for frequency minus base frequency',
freq='f',
base=41490200.0,
)
# Mod('curves',
# 'frappy_psi.ultrasound.Curves',
# 't, I, Q and pulse arrays for plot',
# )
def roi(name, time, size, components='iqpa', enable=True, control=False, freq=None, **kwds):
description = 'I/Q of region {name}'
if freq:
kwds.update(cls='frappy_psi.ultrasound.ControlRoi',
description=f'{description} as control loop',
freq=freq, **kwds)
else:
kwds.update(cls='frappy_psi.ultrasound.Roi',
description=description, **kwds)
kwds.update({c: name + c for c in components})
Mod(name,
main='u',
time=time,
size=size,
enable=enable,
**kwds,
)
for c in components:
Mod(name + c,
'frappy.modules.Readable',
f'{name}{c} component',
)
# control loop
roi('roi0', 2450, 300, freq='f', maxstep=100000, minstep=4000)
# other rois
roi('roi1', 5950, 300)
roi('roi2', 9475, 300)
roi('roi3', 12900, 300)
#roi('roi4', 400, 30, False)
#roi('roi5', 400, 30, False)
#roi('roi6', 400, 30, False)
#roi('roi7', 400, 30, False)
#roi('roi8', 400, 30, False)
#roi('roi9', 400, 30, False)
Mod('delay',
'frappy_psi.dg645.Delay',
'delay line with 2 channels',
uri='serial:///dev/ttyS2',
on1=1e-09,
on2=1e-09,
off1=4e-07,
off2=6e-07,
)

24
cfg/QnwTC1_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('QnwTC1test.psi.ch',
'QnwTC1 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.qnw.QnwIO',
'connection for Quantum northwest',
uri='tcp://ldm-fi-ts:3001',
)
Mod('T',
'frappy_psi.qnw.TemperatureLoopTC1',
'holder temperature',
channel='CT',
io='io',
)
Mod('Th',
'frappy_psi.qnw.SensorTC1',
'heat exch. temperature',
channel='HT',
io='io',
)

39
cfg/RUS_cfg.py Normal file
View File

@ -0,0 +1,39 @@
Node(equipment_id = 'r_ultrasound.psi.ch',
description = 'resonant ultra sound setup',
interface = 'tcp://5000',
)
Mod('iq',
cls = 'frappy_psi.ultrasound.RUS',
description = 'ultrasound iq mesurement',
imod = 'i',
qmod = 'q',
freq='f',
input_range=10, # VPP
input_delay = 0,
periods = 163,
)
Mod('freqio',
'frappy_psi.ultrasound.FreqStringIO',
' ',
uri = 'serial:///dev/ttyS1?baudrate=57600',
)
Mod('f',
cls = 'frappy_psi.ultrasound.Frequency',
description = 'ultrasound frequency',
io='freqio',
output='L', # L for LF (bnc), R for RF (type N)
target=10000,
)
Mod('i',
cls='frappy.modules.Readable',
description='I component',
)
Mod('q',
cls='frappy.modules.Readable',
description='Q component',
)

19
cfg/TFA10_cfg.py Normal file
View File

@ -0,0 +1,19 @@
Node('TFA10.psi.ch',
'TFA10 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.thermofisher.ThermFishIO',
'connection for ThermoFisher A10',
uri='tcp://ldm-fi-ts:3002',
)
Mod('T',
'frappy_psi.thermofisher.TemperatureLoopA10',
'holder temperature',
io='io',
target=Param(max=100),
tolerance=0.5,
settling_time=20,
)

4
cfg/addons.ini Normal file
View File

@ -0,0 +1,4 @@
[FRAPPY]
confdir = ~/frappy/cfg/addons:~/frappy/cfg/develop
logdir = ~/frappylog
piddir = ~/frappylog/pid

View File

@ -0,0 +1,37 @@
Node('ah2550.addon.sea.psi.ch',
'Andeen Hagerlin 2550 Capacitance Bridge using SEA',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to mbe_ah2550',
config='ah2550.addon',
export=False,
service='addons',
)
Mod('ah',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='cap',
extra_modules = ['cap', 'loss']
)
Mod('cap',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.cap',
value=Param(fmtstr='%.12g'),
)
Mod('loss',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.loss',
)
Mod('capslope',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='capslope',
)

22
cfg/addons/ah2700_cfg.py Executable file
View File

@ -0,0 +1,22 @@
Node('ah2700.frappy.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge',
)
Mod('cap_io',
'frappy_psi.ah2700.Ah2700IO',
'',
uri='linse-976d-ts:3006',
)
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
io = 'cap_io',
)
Mod('loss',
'frappy_psi.parmod.Par',
'loss parameter',
read='cap.loss',
unit='deg',
)

View File

@ -0,0 +1,39 @@
Node('ah2700.addon.sea.psi.ch',
'Andeen Hagerlin 2700 Capacitance Bridge using SEA',
)
sea_cfg='ah2700.addon'
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to mbe_ah2700',
config='ah2700.addon',
export=False,
service='addons',
)
Mod('ah',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='cap',
extra_modules = ['cap', 'loss']
)
Mod('cap',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.cap',
value=Param(fmtstr='%.12g'),
)
Mod('loss',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='ah.loss',
)
Mod('capslope',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='capslope',
)

View File

@ -0,0 +1,16 @@
Node('be-filter-boa.addon.sea.psi.ch',
'CryoTel be-filter BOA',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'addons sea connection for be-filter-boa.addon',
config='be-filter-boa.addon',
service='addons',
)
Mod('befilter',
'frappy_psi.sea.SeaReadable', '',
sea_object='befilter',
io='sea_addons',
)

View File

@ -0,0 +1,49 @@
Node('cfg/sea/camea-be-filter.cfg',
'Camea Be-Filter',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'addons sea connection for camea-be-filter.addon',
config='camea-be-filter.addon',
service='addons',
)
Mod('t_be_filter',
'frappy_psi.sea.SeaReadable',
'Be filter T',
io='sea_addons',
sea_object='t_be_filter',
extra_modules=['a', 'b', 'c', 'd', 'det'],
)
Mod('t_be_fil_top_m',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.a',
)
Mod('t_be_fil_top_r',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.b',
)
Mod('t_be_fil_bot_l',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.c',
)
Mod('t_be_fil_bot_r',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.d',
)
Mod('t_detector',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
single_module='t_be_filter.det',
)

View File

@ -0,0 +1,56 @@
Node('flamesample.psi.ch',
'flame sample thermometers and heater',
interface = 'tcp://5000',
)
Mod('lscio',
'frappy_psi.ls372.StringIO',
'sample channels LS372 io',
uri = 'flamedil-ls.psi.ch:7777',
)
Mod('lsc_channel',
'frappy_psi.ls372.Switcher',
'channel switcher sample ls372',
io='lscio',
value = 3,
)
Mod('ts_low',
'frappy_psi.ls372.TemperatureLoop',
'sample RuOX',
channel = 3,
switcher = 'lsc_channel',
minrange=13,
range=22,
tolerance = 0.1,
vexc = 3,
htrrng=4,
)
Mod('ts_high',
'frappy_psi.ls372.TemperatureLoop',
'sample Cernox',
channel = 1,
switcher = 'lsc_channel',
minrange=11,
vexc = 5,
range=22,
tolerance = 0.1,
htrrng=5,
minheater=5e-4,
)
Mod('ts',
'frappy_psi.parmod.SwitchDriv',
'automatically switching between ts_low and ts_high',
meaning=['temperature', 40],
value=Param(unit='K'),
low='ts_low',
high='ts_high',
#min_high=0.6035,
#max_low=1.6965,
min_high=0.6,
max_low=1.7,
tolerance=0.1,
)

View File

@ -0,0 +1,16 @@
Node('focus-be-filter.addon.sea.psi.ch',
'FOCUS Beryllium filter with cryotel closed cycle',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA connection to addons',
config='focus-be-filter.addon',
service='addons',
)
Mod('befilter',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='cryo',
)

26
cfg/addons/ls372_cfg.py Normal file
View File

@ -0,0 +1,26 @@
Mod('lsc',
'frappy.io.StringIO',
'',
wait_before=0.05,
uri='flamedil-ls:7777',
)
Mod('r1',
'frappy_psi.ls372.ResChannel',
'resistivity from LS 372',
switcher='channel',
channel=1,
)
Mod('r3',
'frappy_psi.ls372.ResChannel',
'resistivity from LS 372',
switcher='channel',
channel=3,
)
Mod('channel',
'frappy_psi.ls372.Switcher',
'LS 372 channel switcher',
io='lsc',
)

View File

@ -0,0 +1,34 @@
Node('cfg/addons/razorbill.cfg',
'razorbill forwarder',
)
Mod('sea_addons',
'frappy_psi.sea.SeaClient',
'SEA stick connection',
config='razorbill.addon',
service='addons',
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
io='sea_addons',
sea_object='tt',
json_file='ori6.config.json',
rel_paths=['ts'],
)
Mod('T_remote',
'frappy.proxy.Proxy',
'dummy (remote) T',
remote_class = 'frappy_psi.dummy.Temp',
uri='razorbill:3000',
module='T',
# export=False,
)
Mod('forwarder',
'frappy_psi.dummy.Forwarder',
'forwarder',
src='ts',
dst='T_remote')

View File

@ -0,0 +1,17 @@
Node('stickmotor.linse.psi.ch',
'mobile rotation stage (from MA02)',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ldmcc08-ts:3006',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
backlash=-1,
)

44
cfg/addons/vsource_cfg.py Normal file
View File

@ -0,0 +1,44 @@
Node('k2601b.psi.ch',
'source meter keithley 2601b',
interface='tcp://5000',
)
Mod('vsource_io',
'frappy_psi.k2601b.K2601bIO',
'source meter',
# uri = '129.129.156.90:5025',
uri = "sans-sample-ts:3011"
)
Mod('source',
'frappy_psi.k2601b.SourceMeter'
'',
description = "keithley sourcemeter",
mode = 1,
vlimit = 6.0,
ilimit = 2.,
io = 'vsource_io',
)
Mod('volt',
'frappy_psi.k2601b.Voltage'
'',
description = "Voltage Source",
active = True,
limit = 5.0,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)
Mod('cur',
'frappy_psi.k2601b.Current'
'',
description = "Current Source",
active = False,
limit = 0.10,
target = 0.0,
sourcemeter = 'source',
io = 'vsource_io',
)

View File

@ -1,17 +0,0 @@
[node AH2700Test.psi.ch]
description = AH2700 capacitance bridge test
[interface tcp]
type = tcp
bindto = 0.0.0.0
bindport = 5000
[module cap]
class = secop_psi.ah2700.Capacitance
description = capacitance
uri=ldmse3-ts:3015
#[module ahcom]
#class = secop_psi.ah2700.StringIO
#uri=ldmse3-ts:3015
#description = serial communicator to an AH2700

10
cfg/ah2700test_cfg.py Normal file
View File

@ -0,0 +1,10 @@
Node('AH2700Test.psi.ch',
'AH2700 capacitance bridge test',
'tcp://5000',
)
Mod('cap',
'frappy_psi.ah2700.Capacitance',
'capacitance',
uri='ldmse3-ts:3015',
)

View File

@ -1,111 +0,0 @@
[node MLZ_amagnet(Garfield)]
description=MLZ-Amagnet
.
Water cooled magnet from ANTARES@MLZ.
.
Use module to control the magnetic field.
Don't forget to select symmetry first (can be moved only at zero field!).
.
Monitor T1..T4 (Coil temps), if they get to hot, field will ramp down!
.
In case of Problems, contact the ANTARES people at MLZ.
visibility=expert
foo=bar
[interface tcp]
type=tcp
bindto=0.0.0.0
bindport=10767
[module enable]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice='tango://localhost:10000/box/plc/_enable'
value.datatype=["enum", {'On':1,'Off':0}]
target.datatype=["enum", {'On':1,'Off':0}]
.description='Enables to Output of the Powersupply'
.visibility='advanced'
[module polarity]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_polarity
value.datatype=["enum", {'+1':1,'0':0,'-1':-1}]
target.datatype=["enum", {'+1':1,'0':0,'-1':-1}]
.description=polarity (+/-) switch
.
there is an interlock in the plc:
if there is current, switching polarity is forbidden
if polarity is short, powersupply is disabled
.visibility=advanced
comtries=50
[module symmetry]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_symmetric
value.datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]
target.datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]
.description=par/ser switch selecting (a)symmetric mode
.
symmetric is ser, asymmetric is par
.visibility=advanced
[module T1]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t1
.description=Temperature1 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module T2]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t2
.description=Temperature2 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module T3]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t3
.description=Temperature3 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module T4]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_t4
.description=Temperature4 of the coils system
#warnlimits=(0, 50)
value.unit='degC'
[module currentsource]
class=secop_mlz.entangle.PowerSupply
tangodevice=tango://localhost:10000/box/lambda/curr
.description=Device for the magnet power supply (current mode)
abslimits=(0,200)
speed=1
ramp=60
precision=0.02
current=0
voltage=10
#unit=A
.visibility=advanced
[module mf]
class=secop_mlz.amagnet.GarfieldMagnet
.description=magnetic field module, handling polarity switching and stuff
subdev_currentsource=currentsource
subdev_enable=enable
subdev_polswitch=polarity
subdev_symmetry=symmetry
target.unit='T'
value.unit='T'
userlimits=(-0.35, 0.35)
calibrationtable={'symmetric':[0.00186517, 0.0431937, -0.185956, 0.0599757, 0.194042],
'short': [0.0, 0.0, 0.0, 0.0, 0.0],
'asymmetric':[0.00136154, 0.027454, -0.120951, 0.0495289, 0.110689]}
.meaning=The magnetic field
.priority=100
.visibility=user
abslimits.default=-0.4,0.4

91
cfg/amagnet_cfg.py Normal file
View File

@ -0,0 +1,91 @@
Node('MLZ_amagnet(Garfield)',
'MLZ-Amagnet\n'
'\n'
'Water cooled magnet from ANTARES@MLZ.\n'
'\n'
'Use module to control the magnetic field.\n'
'Don\'t forget to select symmetry first (can be moved only at zero field!).\n'
'\n'
'Monitor T1..T4 (Coil temps), if they get to hot, field will ramp down!\n'
'\n'
'In case of Problems, contact the ANTARES people at MLZ.',
'tcp://10767',
visibility = 'expert',
foo = 'bar',
)
Mod('enable',
'frappy_mlz.entangle.NamedDigitalOutput',
'Enables to Output of the Powersupply',
tangodevice = 'tango://localhost:10000/box/plc/_enable',
value = Param(datatype=["enum", {'On':1,'Off':0}]),
target = Param(datatype=["enum", {'On':1,'Off':0}]),
visibility = 'advanced',
)
Mod('polarity',
'frappy_mlz.entangle.NamedDigitalOutput',
'polarity (+/-) switch\n'
'\n'
'there is an interlock in the plc:\n'
'if there is current, switching polarity is forbidden\n'
'if polarity is short, powersupply is disabled',
tangodevice = 'tango://localhost:10000/box/plc/_polarity',
value = Param(datatype=["enum", {'+1':1,'0':0,'-1':-1}]),
target = Param(datatype=["enum", {'+1':1,'0':0,'-1':-1}]),
visibility = 'advanced',
comtries = 50,
)
Mod('symmetry',
'frappy_mlz.entangle.NamedDigitalOutput',
'par/ser switch selecting (a)symmetric mode\n'
'\n'
'symmetric is ser, asymmetric is par',
tangodevice = 'tango://localhost:10000/box/plc/_symmetric',
value = Param(datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]),
target = Param(datatype=["enum",{'symmetric':1,'short':0, 'asymmetric':-1}]),
visibility = 'advanced',
)
for i in range(1,5):
Mod('T%d' % i,
'frappy_mlz.entangle.AnalogInput',
'Temperature %d of the coils system' % i,
tangodevice = 'tango://localhost:10000/box/plc/_t%d' % i,
#warnlimits=(0, 50),
value = Param(unit='degC'),
)
Mod('currentsource',
'frappy_mlz.entangle.PowerSupply',
'Device for the magnet power supply (current mode)',
tangodevice = 'tango://localhost:10000/box/lambda/curr',
abslimits = (0,200),
speed = 1,
ramp = 60,
precision = 0.02,
current = 0,
voltage = 10,
#value=Param(unit='A')
visibility = 'advanced',
)
Mod('mf',
'frappy_mlz.amagnet.GarfieldMagnet',
'magnetic field module, handling polarity switching and stuff',
currentsource = 'currentsource',
enable = 'enable',
polswitch = 'polarity',
symmetry = 'symmetry',
target = Param(unit='T'),
value = Param(unit='T'),
userlimits = (-0.35, 0.35),
calibrationtable = {'symmetric':[0.00186517, 0.0431937, -0.185956, 0.0599757, 0.194042],
'short': [0.0, 0.0, 0.0, 0.0, 0.0],
'asymmetric':[0.00136154, 0.027454, -0.120951, 0.0495289, 0.110689]},
meaning = ['The magnetic field', 1],
#priority=100,
visibility = 'user',
abslimits = (-0.4,0.4,),
)

19
cfg/attocube_cfg.py Normal file
View File

@ -0,0 +1,19 @@
Node('attocube_test.psi.ch',
'a single attocube axis',
interface='tcp://5000',
)
Mod('r',
'frappy_psi.attocube.Axis',
'ANRv220-F3-02882',
axis = 1,
value = Param(unit='deg'),
tolerance = 0.1,
target_min = 0,
target_max = 360,
steps_fwd = 45,
steps_bwd = 85,
step_mode = True,
# gear = 1.2,
)

View File

@ -1,150 +0,0 @@
[node MLZ_ccr12]
description = CCR box of MLZ Sample environment group
.
Contains a Lakeshore 336 and an PLC controlling the compressor
and some valves.
[interface tcp]
type=tcp
bindto=0.0.0.0
bindport=10767
[module automatik]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_automatik
mapping=dict(Off=0,p1=1,p2=2)
description="controls the (simple) pressure regulation
.
selects between off, regulate on p1 or regulate on p2 sensor"
[module compressor]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_cooler_onoff
mapping=dict(Off=0,On=1)
description=control the compressor (on/off)
[module gas]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_gas_onoff
mapping=dict(Off=0,On=1)
description=control the gas inlet into the ccr (on/off)
.
note: this switches off automatically after 15 min.
note: activation de-activates the vacuum inlet
note: if the pressure regulation is active, it enslave this device
[module vacuum]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/plc/_vacuum_Onoff
mapping=dict(Off=0,On=1)
description=control the vacuum inlet into the ccr (on/off)
.
note: activation de-activates the gas inlet
note: if the pressure regulation is active, it enslave this device
[module p1]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_p1
value.unit='mbar'
description=pressure sensor 1 (linear scale)
[module p2]
class=secop_mlz.entangle.AnalogInput
tangodevice=tango://localhost:10000/box/plc/_p2
value.unit='mbar'
description=pressure sensor 2 (selectable curve)
[module curve_p2]
class=secop_mlz.entangle.NamedDigitalInput
tangodevice=tango://localhost:10000/box/plc/_curve
value.default=0
description=calibration curve for pressure sensor 2
mapping="{'0-10V':0, '0-1000mbar':1, '1-9V to 0-1 mbar':2,
'DI200':3, 'DI2000':4, 'TTR100':7, 'PTR90':8,
'PTR225/237':9, 'ITR90':10, 'ITR100-D':11,
'ITR100-2':12, 'ITR100-3':13, 'ITR100-4':14,
'ITR100-5':15, 'ITR100-6':16, 'ITR100-7':17,
'ITR100-8':18, 'ITR100-9':19, 'ITR100-A':20,
'CMR361':21, 'CMR362':22, 'CMR363':23,
'CMR364':24, 'CMR365':25}"
# sensors
[module T_sample]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/sample/sensora
value.unit='K'
description=sample temperature
[module T_stick]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/stick/sensorb
value.unit='K'
description=temperature at bottom of sample stick
[module T_coldhead]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/coldhead/sensorc
value.unit='K'
description=temperature at coldhead
[module T_tube]
class=secop_mlz.entangle.Sensor
tangodevice=tango://localhost:10000/box/tube/sensord
value.unit='K'
description=temperature at thermal coupling tube <-> stick
# regulations
[module T_stick_regulation]
class=secop_mlz.entangle.TemperatureController
tangodevice=tango://localhost:10000/box/stick/control2
heateroutput.default=0
description=regulation of stick temperature
ramp.default=6
speed.default=0.1
setpoint.default=0
pid.default=(40,10,1)
p.default=40
i.default=10
d.default=1
abslimits=(0,500)
value.unit='K'
# OMG! a NamedDigitalOutput, but with float'ints' 0..3
[module T_stick_regulation_heaterrange]
class=secop_mlz.entangle.AnalogOutput
tangodevice=tango://localhost:10000/box/stick/range2
precision.default=1
abslimits=(0,3)
description=heaterrange for stick regulation
[module T_tube_regulation]
class=secop_mlz.entangle.TemperatureController
tangodevice=tango://localhost:10000/box/tube/control1
description=regulation of tube temperature
heateroutput.default=0
ramp.default=6
speed.default=0.1
setpoint.default=0
pid.default=(40,10,1)
p.default=40
i.default=10
d.default=1
abslimits=(0,500)
value.unit='K'
# OMG! a NamedDigitalOutput, but with float'ints' 0..3
#[module T_tube_regulation_heaterrange]
#class=secop_mlz.entangle.AnalogOutput
#tangodevice=tango://localhost:10000/box/tube/range1
#precision.default=1
#abslimits=(0,3)
[module T_tube_regulation_heaterrange]
class=secop_mlz.entangle.NamedDigitalOutput
tangodevice=tango://localhost:10000/box/tube/range1
mapping=dict(Off=0, Low=1, Medium=2, High=3)
description=heaterrange for tube regulation

148
cfg/ccr_cfg.py Normal file
View File

@ -0,0 +1,148 @@
desc = '''CCR box of MLZ Sample environment group
Contains a Lakeshore 336 and an PLC controlling the compressor
and some valves.'''
Node('MLZ_ccr',
desc,
'tcp://10767',
)
Mod('automatik',
'frappy_mlz.entangle.NamedDigitalOutput',
'controls the (simple) pressure regulation\n'
'\n'
'selects between off, regulate on p1 or regulate on p2 sensor',
tangodevice = 'tango://localhost:10000/box/plc/_automatik',
mapping={'Off':0,'p1':1,'p2':2},
)
Mod('compressor',
'frappy_mlz.entangle.NamedDigitalOutput',
'control the compressor (on/off)',
tangodevice = 'tango://localhost:10000/box/plc/_cooler_onoff',
mapping={'Off':0,'On':1},
)
Mod('gas',
'frappy_mlz.entangle.NamedDigitalOutput',
'control the gas inlet into the ccr (on/off)\n'
'\n'
'note: this switches off automatically after 15 min.\n'
'note: activation de-activates the vacuum inlet\n'
'note: if the pressure regulation is active, it enslave this device',
tangodevice = 'tango://localhost:10000/box/plc/_gas_onoff',
mapping={'Off':0,'On':1},
)
Mod('vacuum',
'frappy_mlz.entangle.NamedDigitalOutput',
'control the vacuum inlet into the ccr (on/off)\n'
'\n'
'note: activation de-activates the gas inlet\n'
'note: if the pressure regulation is active, it enslave this device',
tangodevice = 'tango://localhost:10000/box/plc/_vacuum_onoff',
mapping={'Off':0,'On':1},
)
Mod('p1',
'frappy_mlz.entangle.AnalogInput',
'pressure sensor 1 (linear scale)',
tangodevice = 'tango://localhost:10000/box/plc/_p1',
value = Param(unit='mbar')
)
Mod('p2',
'frappy_mlz.entangle.AnalogInput',
'pressure sensor 2 (selectable curve)',
tangodevice = 'tango://localhost:10000/box/plc/_p2',
value = Param(unit='mbar'),
)
Mod('curve_p2',
'frappy_mlz.entangle.NamedDigitalInput',
'calibration curve for pressure sensor 2',
tangodevice = 'tango://localhost:10000/box/plc/_curve',
value = 0,
mapping = {'0-10V':0, '0-1000mbar':1, '1-9V to 0-1 mbar':2,
'DI200':3, 'DI2000':4, 'TTR100':7, 'PTR90':8,
'PTR225/237':9, 'ITR90':10, 'ITR100-D':11,
'ITR100-2':12, 'ITR100-3':13, 'ITR100-4':14,
'ITR100-5':15, 'ITR100-6':16, 'ITR100-7':17,
'ITR100-8':18, 'ITR100-9':19, 'ITR100-A':20,
'CMR361':21, 'CMR362':22, 'CMR363':23,
'CMR364':24, 'CMR365':25},
)
Mod('T_tube_regulation',
'frappy_mlz.entangle.TemperatureController',
'regulation of tube temperature',
tangodevice = 'tango://localhost:10000/box/tube/control1',
value = Param(unit = 'K'),
heateroutput = 0,
ramp = 6,
speed = 0.1,
setpoint = 0,
pid = (40, 10, 1),
p = 40,
i = 10,
d = 1,
abslimits = (0, 500),
)
Mod('T_stick_regulation',
'frappy_mlz.entangle.TemperatureController',
'regualtion of stick temperature',
tangodevice = 'tango://localhost:10000/box/stick/control2',
value = Param(unit = 'K'),
heateroutput = 0,
ramp = 6,
speed = 0.1,
setpoint = 0,
pid = (40, 10, 1),
p = 40,
i = 10,
d = 1,
abslimits = (0, 500),
)
Mod('T_sample',
'frappy_mlz.entangle.Sensor',
'sample temperature',
tangodevice = 'tango://localhost:10000/box/sample/sensora',
value = Param(unit = 'K'),
)
Mod('T_stick',
'frappy_mlz.entangle.Sensor',
'temperature at bottom of sample stick',
tangodevice = 'tango://localhost:10000/box/stick/sensorb',
value = Param(unit = 'K'),
)
Mod('T_coldhead',
'frappy_mlz.entangle.Sensor',
'temperature at coldhead',
tangodevice = 'tango://localhost:10000/box/coldhead/sensorc',
value = Param(unit = 'K'),
)
Mod('T_tube',
'frappy_mlz.entangle.Sensor',
'temperature at thermal coupling tube <-> stick',
tangodevice = 'tango://localhost:10000/box/tube/sensord',
value = Param(unit = 'K'),
)
# THIS IS A HACK: due to entangle (in controller)
Mod('T_tube_regulation_heaterrange',
'frappy_mlz.entangle.NamedDigitalOutput',
'heaterrange for tube regulation',
tangodevice = 'tango://localhost:10000/box/tube/range1',
mapping={'Off':0,'Low':1,'Medium':2, 'High':3},
)
Mod('T_stick_regulation_heaterrange',
'frappy_mlz.entangle.NamedDigitalOutput',
'heaterrange for stick regulation',
tangodevice = 'tango://localhost:10000/box/stick/range2',
mapping={'Off':0,'Low':1,'Medium':2, 'High':3},
)

View File

@ -1,50 +0,0 @@
[node cryo_7]
# set SEC-node properties
description = short description
.
This is a very long description providing all the glory details in all the glory details about the stuff we are describing
[interface tcp]
type=tcp
bindto=0.0.0.0
bindport=10769
[module cryo]
# some (non-defaut) module properties
.group=very important/stuff
.description=A simulated cc cryostat with heat-load, specific heat for the sample
and a temperature dependend heat-link between sample and regulation.
# class of module:
class=secop_demo.cryo.Cryostat
# some parameters
jitter=0.1
T_start=10.0
target=10.0
looptime=1
ramp=6
maxpower=20.0
heater=4.1
p=40
i=10
d=2
mode=pid
tolerance=0.1
window=30
timeout=900
# some (non-default) parameter properties
pollinterval.export=False
# some parameter grouping
p.group=pid
i.group=pid
d.group=pid
value.unit=K
# test custom properties
value.test=customized value

35
cfg/cryo_cfg.py Normal file
View File

@ -0,0 +1,35 @@
#####################################################################
# Python version of frappy config
#####################################################################
Node('cryo_7.frappy.demo',
'short description\n\n'
'This is a very long description providing all the gory details '
'about the stuff we are describing.',
'tcp://10769',
more="blub",
)
Mod('cryo',
'frappy_demo.cryo.Cryostat',
'A simulated cc cryostat with heat-load, specific heat for the sample and a '
'temperature dependent heat-link between sample and regulation.',
group='very important/stuff',
jitter=0.1,
T_start=10.0,
target=10.0,
looptime=1,
ramp=6,
maxpower=20.0,
heater=4.1,
mode='pid',
tolerance=0.1,
window=30,
timeout=900,
p = Param(40, unit='%/K'), # in case 'default' is the first arg, we can omit 'default='
i = 10,
d = 2,
pid = Group('p', 'i', 'd'),
pollinterval = Param(export=False),
value = Param(unit = 'K', test = 'customized value'),
)

View File

@ -1,43 +0,0 @@
[node Equipment_ID_for_demonstration]
description = virtual modules to play around with
[interface tcp]
bindto=0.0.0.0
bindport=10767
[module heatswitch]
class=secop_demo.modules.Switch
switch_on_time=5
switch_off_time=10
.description="Heatswitch for `mf` device"
[module mf]
class=secop_demo.modules.MagneticField
heatswitch = heatswitch
.description="simulates some cryomagnet with persistent/non-persistent switching"
[module ts]
class=secop_demo.modules.SampleTemp
sensor = 'Q1329V7R3'
ramp = 4
target = 10
value = 10
.description = "some temperature"
[module tc1]
class=secop_demo.modules.CoilTemp
sensor="X34598T7"
.description = "some temperature"
[module tc2]
class=secop_demo.modules.CoilTemp
sensor="X39284Q8'
.description = "some temperature"
[module label]
class=secop_demo.modules.Label
system=Cryomagnet MX15
subdev_mf=mf
subdev_ts=ts
.description = "some label indicating the state of the magnet `mf`."

46
cfg/demo_cfg.py Normal file
View File

@ -0,0 +1,46 @@
Node('demo.frappy.demo',
'Basic demo server for frappy',
'tcp://10767',
)
Mod('heatswitch',
'frappy_demo.modules.Switch',
'Heatswitch for `mf` device',
switch_on_time = 5,
switch_off_time = 10,
)
Mod('mf',
'frappy_demo.modules.MagneticField',
'simulates some cryomagnet with persistent/non-persistent switching',
heatswitch = 'heatswitch',
)
Mod('ts',
'frappy_demo.modules.SampleTemp',
'some temperature',
sensor = 'Q1329V7R3',
ramp = 4,
target = 10,
value = 10,
)
Mod('tc1',
'frappy_demo.modules.CoilTemp',
'some temperature',
sensor = 'X34598T7',
)
Mod('tc2',
'frappy_demo.modules.CoilTemp',
'some temperature',
sensor = 'X39284Q8',
)
Mod('label',
'frappy_demo.modules.Label',
'some label indicating the state of the magnet `mf`.',
system = 'Cryomagnet MX15',
mf = 'mf',
ts = 'ts',
)

9
cfg/develop/sea_cfg.py Normal file
View File

@ -0,0 +1,9 @@
Node('comm.sea.psi.ch',
'sea client (communication only)',
)
Mod('seaconn',
'frappy_psi.sea.SeaClient',
'a SEA connection',
visibility='expert',
)

View File

@ -0,0 +1,11 @@
# error creating module seaconn:
# missing sea port for seadesc
Node('comm.sea.psi.ch',
'sea client (tool for creating cfg)',
)
Mod('seaconn',
'frappy_psi.sea.SeaConfigCreator',
'a SEA connection. will shut down after getting the description',
visibility=1,
)

231
cfg/dilsc_cfg.py Normal file
View File

@ -0,0 +1,231 @@
Node('cfg/dilsc1.cfg',
'triton test',
interface='5000',
name='dilsc1',
)
Mod('triton',
'frappy_psi.mercury.IO',
'connection to triton software',
uri='tcp://192.168.2.33:33576',
)
Mod('T_mix',
'frappy_psi.triton.TemperatureSensor',
'mix. chamber temperature',
slot='T8',
io='triton',
)
Mod('T_pt2head',
'frappy_psi.triton.TemperatureSensor',
'PTR2 head temperature',
slot='T1',
io='triton',
)
Mod('T_pt2plate',
'frappy_psi.triton.TemperatureSensor',
'PTR2 plate temperature',
slot='T2',
io='triton',
)
Mod('T_still',
'frappy_psi.triton.TemperatureSensor',
'still temperature',
slot='T3',
io='triton',
)
Mod('htr_still',
'frappy_psi.triton.HeaterOutput',
'still heater',
slot='H2',
io='triton',
)
Mod('T_coldpl',
'frappy_psi.triton.TemperatureSensor',
'cold plate temperature',
slot='T4',
io='triton',
)
Mod('T_mixcx',
'frappy_psi.triton.TemperatureSensor',
'mix. chamber cernox',
slot='T5',
io='triton',
)
Mod('T_pt1head',
'frappy_psi.triton.TemperatureSensor',
'PTR1 head temperature',
slot='T6',
io='triton',
)
Mod('T_pt1plate',
'frappy_psi.triton.TemperatureSensor',
'PTR1 plate temperature',
slot='T7',
io='triton',
)
Mod('T_pucksensor',
'frappy_psi.triton.TemperatureLoop',
'puck sensor temperature',
output_module='htr_pucksensor',
slot='TA',
io='triton',
)
Mod('htr_pucksensor',
'frappy_psi.triton.HeaterOutputWithRange',
'mix. chamber heater',
slot='H1,TA',
io='triton',
)
Mod('T_magnet',
'frappy_psi.triton.TemperatureSensor',
'magnet temperature',
slot='T13',
io='triton',
)
Mod('action',
'frappy_psi.triton.Action',
'higher level scripts',
io='triton',
slot='DR',
)
Mod('p_dump',
'frappy_psi.mercury.PressureSensor',
'dump pressure',
slot='P1',
io='triton',
)
Mod('p_cond',
'frappy_psi.mercury.PressureSensor',
'condenser pressure',
slot='P2',
io='triton',
)
Mod('p_still',
'frappy_psi.mercury.PressureSensor',
'still pressure',
slot='P3',
io='triton',
)
Mod('p_fore',
'frappy_psi.mercury.PressureSensor',
'pressure on the pump side',
slot='P5',
io='triton',
)
Mod('p_back',
'frappy_psi.mercury.PressureSensor',
'pressure on the back side of the pump',
slot='P4',
io='triton',
)
Mod('p_ovc',
'frappy_psi.mercury.PressureSensor',
'outer vacuum pressure',
slot='P6',
io='triton',
)
Mod('V1',
'frappy_psi.triton.Valve',
'valve V1',
slot='V1',
io='triton',
)
Mod('V2',
'frappy_psi.triton.Valve',
'valve V2',
slot='V2',
io='triton',
)
Mod('V4',
'frappy_psi.triton.Valve',
'valve V4',
slot='V4',
io='triton',
)
Mod('V5',
'frappy_psi.triton.Valve',
'valve V5',
slot='V5',
io='triton',
)
Mod('V9',
'frappy_psi.triton.Valve',
'valve V9',
slot='V9',
io='triton',
)
Mod('ips',
'frappy_psi.mercury.IO',
'IPS for magnet',
uri='192.168.127.254:3001',
)
Mod('mf',
'frappy_psi.dilsc.VectorField',
'vector field',
x='mfx',
y='mfy',
z='mfz',
sphere_radius=0.6,
cylinders=((0.23, 5.2), (0.45, 0.8)),
)
Mod('mfx',
'frappy_psi.ips_mercury.SimpleField',
'magnetic field, x-axis',
slot='GRPX',
io='ips',
tolerance=0.0001,
wait_stable_field=0.0,
nunits=2,
target=Param(max=0.6),
ramp=0.225,
)
Mod('mfy',
'frappy_psi.ips_mercury.SimpleField',
'magnetic field, y axis',
slot='GRPY',
io='ips',
tolerance=0.0001,
wait_stable_field=0.0,
nunits=2,
target=Param(max=0.6),
ramp=0.225,
)
Mod('mfz',
'frappy_psi.ips_mercury.Field',
'magnetic field, z-axis',
slot='GRPZ',
io='ips',
tolerance=0.0001,
target=Param(max=5.2),
mode='DRIVEN',
ramp=0.52,
)

12
cfg/dpm_cfg.py Normal file
View File

@ -0,0 +1,12 @@
Node('dpm.psi.ch',
'DPM driver for pressure cell',
interface='tcp://5000',
)
Mod('force',
'frappy_psi.dpm.DPM3',
'DPM driver to read out the transducer value, write and read the offset and scale factor',
uri='serial:///dev/ttyUSB1',
digits=2,
scale_factor=0.0156,
)

27
cfg/drums_cfg.py Normal file
View File

@ -0,0 +1,27 @@
Node('relais.psi.ch',
'relais test',
'tcp://5000',
)
Mod('rl',
'frappy_psi.ionopimax.DigitalOutput',
'left relais',
addr = 'o1',
value = 0, # start with relais off
)
Mod('rr',
'frappy_psi.ionopimax.DigitalOutput',
'right relais',
addr = 'o2',
value = 0, # start with relais off
)
Mod('drummer',
'frappy_psi.drums.Drums',
'drummer',
target = 150,
pattern='l2L2rl1R1L2',
left='rl',
right='rr',
)

View File

@ -1,50 +0,0 @@
[node see_demo_equipment]
description=Do not use, it needs to be rewritten....
[interface testing]
type=tcp
bindto=0.0.0.0
bindport=10767
[module tc1]
class=secop_demo.modules.CoilTemp
sensor="X34598T7"
[module tc2]
class=secop_demo.modules.CoilTemp
sensor="X39284Q8'
[module sensor1]
class=secop_ess.epics.EpicsReadable
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG1"
[module loop1]
class=secop_ess.epics.EpicsTempCtrl
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG1"
target_pv="DEV:SETP_S1"
heaterrange_pv="DEV:RANGE_S1"
[module sensor2]
class=secop_ess.epics.EpicsReadable
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG2"
[module loop2]
class=secop_ess.epics.EpicsTempCtrl
epics_version="v4"
.group="Lakeshore336"
value_pv="DEV:KRDG2"
target_pv="DEV:SETP_S2"
heaterrange_pv="DEV:RANGE_S2"

36
cfg/epics_cfg.py Normal file
View File

@ -0,0 +1,36 @@
Node('see_demo_equipment',
'Do not use, it needs to be rewritten....',
'tcp://10767',
)
Mod('tc1',
'frappy_demo.modules.CoilTemp',
'',
sensor="X34598T7",
)
Mod('tc2',
'frappy_demo.modules.CoilTemp',
'',
sensor="X39284Q8",
)
for i in [1,2]:
Mod('sensor%d' % i,
'frappy_ess.epics.EpicsReadable',
'',
epics_version="v4",
value_pv="DEV:KRDG%d" % i,
group="Lakeshore336",
)
Mod('loop%d' % i,
'frappy_ess.epics.EpicsTempCtrl',
'',
epics_version="v4",
group="Lakeshore336",
value_pv="DEV:KRDG%d" % i,
target_pv="DEV:SETP_S%d" % i,
heaterrange_pv="DEV:RANGE_S%d" % i,
)

52
cfg/flowsas_cfg.py Normal file
View File

@ -0,0 +1,52 @@
Node('flowsas.psi.ch',
'flowsas test motors',
'tcp://5000',
)
#Mod('mot_io',
# 'frappy_psi.phytron.PhytronIO',
# 'io for motor control',
# uri = 'serial:///dev/ttyUSB0',
# )
#Mod('hmot',
# 'frappy_psi.phytron.Motor',
# 'horizontal axis',
# axis = 'X',
# io = 'mot_io',
# encoder_mode= 'NO',
# )
#Mod('vmot',
# 'frappy_psi.phytron.Motor',
# 'vertical axis',
# axis = 'Y',
# io = 'mot_io',
# encoder_mode= 'NO',
# )
Mod('syr_io',
'frappy_psi.cetoni_pump.LabCannBus',
'Module for bus',
deviceconfig = "/home/l_samenv/frappy/cetoniSDK/CETONI_SDK_Raspi_64bit_v20220627/config/dual_pumps",
)
Mod('syr1',
'frappy_psi.cetoni_pump.SyringePump',
'First syringe pump',
io='syr_io',
pump_name = "Nemesys_S_1_Pump",
valve_name = "Nemesys_S_1_Valve",
inner_diameter_set = 10,
piston_stroke_set = 60,
)
Mod('syr2',
'frappy_psi.cetoni_pump.SyringePump',
'Second syringe pump',
io='syr_io',
pump_name = "Nemesys_S_2_Pump",
valve_name = "Nemesys_S_2_Valve",
inner_diameter_set = 1,
piston_stroke_set = 60,
)

7
cfg/generalConfig.cfg Normal file
View File

@ -0,0 +1,7 @@
[FRAPPY]
# general config for running in git repo
logdir = ./log
piddir = ./pid
confdir = ./cfg
comlog = True

16
cfg/lockin70_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('lockin70test.psi.ch',
'lockin70 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.SR.SR_IO',
'lockin communication',
uri='10105266.psi.ch:50000',
)
Mod('XY',
'frappy_psi.SR.XY70',
'XY channels',
io='io',
)

16
cfg/lockin830_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('lockin830test.psi.ch',
'lockin830 test',
'tcp://5000',
)
Mod('io',
'frappy_psi.SR830.SR830_IO',
'lockin communication',
uri='tcp://linse-976d-ts:3002',
)
Mod('XY',
'frappy_psi.SR830.XY',
'XY channels',
io='io',
)

16
cfg/lockin_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('lockintest.psi.ch',
'lockin test',
'tcp://5000',
)
Mod('io',
'frappy_psi.SR.SR_IO',
'lockin communication',
uri='10105266.psi.ch:50000',
)
Mod('XY',
'frappy_psi.SR.XY',
'XY channels',
io='io',
)

20
cfg/ls240_cfg.py Normal file
View File

@ -0,0 +1,20 @@
# error importing secop.bytesio.BytesIO
# module T, attached io: Module 'T_io' does not exist on this SEC-Node!
# error initializing T: AttributeError("'NoneType' object has no attribute 'polledModules'")
Node('ls240.psi.ch',
'ls240 test',
interface='tcp://5000',
)
Mod('T',
'frappy_psi.ls240.Ls240',
'temperature on uniax stick',
io='T_io',
)
Mod('T_io',
'frappy.bytesio.BytesIO',
'IO device for LS240',
uri='serial:///dev/ttyUSB0?baudrate=9600+parity=EVEN',
timeout=0.2,
)

23
cfg/ls336_cfg.py Normal file
View File

@ -0,0 +1,23 @@
from os import environ
# either change the uri or set the environment variable 'LS_URI'
lakeshore_uri = environ.get('LS_URI', 'tcp://<host>:7777')
Node('example_cryo.psi.ch', # a globally unique identification
'this is an example cryostat for the Frappy tutorial', # describes the node
interface='tcp://10767') # you might choose any port number > 1024
Mod('io', # the name of the module
'frappy_demo.lakeshore.LakeshoreIO', # the class used for communication
'communication to main controller', # a description
uri=lakeshore_uri, # the serial connection
)
Mod('T',
'frappy_demo.lakeshore.TemperatureLoop',
'Sample Temperature',
io='io',
channel='A', # the channel on the LakeShore for this module
loop=1, # the loop to be used
value=Param(max=470), # set the maximum expected T
target=Param(max=420), # set the maximum allowed target T
heater_range=3, # 5 for model 350
)

25
cfg/ls340_cfg.py Normal file
View File

@ -0,0 +1,25 @@
Node('ls340test.psi.ch',
'ls340 test',
'tcp://5000'
)
Mod('io',
'frappy_psi.lakeshore.IO340',
'communication to ls340',
uri='tcp://localhost:7777'
)
Mod('dev',
'frappy_psi.lakeshore.Device340',
'device for calcurve',
io='io',
curve_handling=True,
)
Mod('T',
'frappy_psi.lakeshore.Sensor340',
'sample temperature',
# output_module='Heater',
device='dev',
channel='A',
calcurve='x29746',
)

25
cfg/ls370res_cfg.py Normal file
View File

@ -0,0 +1,25 @@
Node('ls370res.psi.ch',
'Lsc370 Test',
interface='tcp://5000',
)
Mod('lsmain_io',
'frappy_psi.ls370res.StringIO',
'the communication device',
uri='lollypop-ts:3001',
)
Mod('lsmain',
'frappy_psi.ls370res.Main',
'main control of Lsc controller',
uri='lollypop-ts:3001',
)
Mod('res',
'frappy_psi.ls370res.ResChannel',
'resistivity',
iexc='1mA',
channel=5,
main='lsmain',
io='lsmain_io',
)

View File

@ -1,24 +0,0 @@
[node LscSIM.psi.ch]
description = Lsc Simulation at PSI
[interface tcp]
type = tcp
bindto = 0.0.0.0
bindport = 5000
[module res]
class = secop_psi.ls370res.ResChannel
.channel = 3
.description = resistivity
.main = lsmain
.iodev = lscom
[module lsmain]
class = secop_psi.ls370res.Main
.description = main control of Lsc controller
.iodev = lscom
[module lscom]
class = secop_psi.ls370sim.Ls370Sim
.description = simulated serial communicator to a LS 370
.visibility = 3

30
cfg/ls370sim_cfg.py Normal file
View File

@ -0,0 +1,30 @@
Node('LscSIM.psi.ch',
'Lsc Simulation at PSI',
'tcp://5000',
)
Mod('lscom',
'frappy_psi.ls370sim.Ls370Sim',
'simulated serial communicator to a LS 370',
visibility = 3
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
'channel switcher for Lsc controller',
io = 'lscom',
)
Mod('a',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 1,
switcher = 'sw',
)
Mod('b',
'frappy_psi.ls370res.ResChannel',
'resistivity',
channel = 3,
switcher = 'sw',
)

View File

@ -1,21 +0,0 @@
[node LscSIM.psi.ch]
description = Lsc370 Test
[interface tcp]
type = tcp
bindto = 0.0.0.0
bindport = 5000
[module lsmain]
class = secop_psi.ls370res.Main
description = main control of Lsc controller
uri = localhost:4567
[module res]
class = secop_psi.ls370res.ResChannel
vexc = '2mV'
channel = 3
description = resistivity
main = lsmain
# the auto created iodev from lsmain:
iodev = lsmain_iodev

29
cfg/ls370test_cfg.py Normal file
View File

@ -0,0 +1,29 @@
Node('LscSIM.psi.ch',
'Lsc370 Test',
'tcp://5000',
)
Mod('io',
'frappy_psi.ls370res.StringIO',
'io for Ls370',
uri = 'localhost:2089',
)
Mod('sw',
'frappy_psi.ls370res.Switcher',
'channel switcher',
io = 'io',
)
Mod('res1',
'frappy_psi.ls370res.ResChannel',
'resistivity chan 1',
vexc = '2mV',
channel = 1,
switcher = 'sw',
)
Mod('res2',
'frappy_psi.ls370res.ResChannel',
'resistivity chn 3',
vexc = '2mV',
channel = 3,
switcher = 'sw',
)

4
cfg/main.ini Normal file
View File

@ -0,0 +1,4 @@
[FRAPPY]
confdir = ~/frappy/cfg/main:~/frappy/cfg/develop
logdir = ~/frappylog
piddir = ~/frappylog/pid

17
cfg/main/ccr2_cfg.py Normal file
View File

@ -0,0 +1,17 @@
Node('ccr2.config.sea.psi.ch',
'sumitomo 4 K closed cycle refrigerator (FOCUS)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'SEA connection to main',
config='ccr2.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature', 20],
io='sea_main',
sea_object='tt',
)

24
cfg/main/ccr2ht_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('ccr2ht.config.sea.psi.ch',
'sumitomo 4 K closed cycle refrigerator with hot stage (FOCUS)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main SEA connection',
config='ccr2ht.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
)
Mod('tcoldfinger',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tk'],
)

17
cfg/main/ccr3_cfg.py Normal file
View File

@ -0,0 +1,17 @@
Node('ccr3.config.sea.psi.ch',
'4 K closed cycle cryostat (ZEBRA)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ccr3.config',
config='ccr3.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
)

40
cfg/main/ccrpe_cfg.py Normal file
View File

@ -0,0 +1,40 @@
Node('ccrpe.config.sea.psi.ch',
'''4 K closed cycle cryostat (PE cell)''',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ccrpe.config',
config = 'ccrpe.config',
service = 'main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['ts', 'set'],
)
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts'],
)
Mod('te',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['te'],
)
Mod('warmup',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'warmup',
)
Mod('p',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'p',
)

View File

@ -0,0 +1,38 @@
Node('cfg/main/ccrpe_lowT.cfg',
'4 K closed cycle cryostat (PE cell)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ccrpe_lowT.config',
config='ccrpe_lowT.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['ts', 'set'],
)
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm'],
)
Mod('te',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['te'],
)
Mod('warmup',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='warmup',
)

49
cfg/main/cryosim_cfg.py Normal file
View File

@ -0,0 +1,49 @@
Node('cyrosim.psi.ch',
'cryo simulation (similar ppms simulation)',
)
Mod('tt',
'frappy_psi.ppms.Temp',
'main temperature',
meaning=('temperature_regulation', 10),
ramp=20.0,
io='ppms',
)
Mod('lev',
'frappy_psi.ppms.Level',
'helium level',
io='ppms',
)
Mod('ts',
'frappy_psi.ppms.UserChannel',
'sample temperature',
enabled=True,
linkenable='tv',
value=Param(
unit='K',
),
meaning=('temperature', 10),
io='ppms',
)
Mod('tv',
'frappy_psi.ppms.UserChannel',
'exchanger temperature',
enabled=True,
linkenable='ts',
value=Param(
unit='K',
),
io='ppms',
)
Mod('ppms',
'frappy_psi.ppms.Main',
'the main and poller module',
class_id='QD.MULTIVU.PPMS.1',
visibility='expert',
pollinterval=2.0,
export=False,
)

17
cfg/main/cti5_cfg.py Normal file
View File

@ -0,0 +1,17 @@
Node('cti5.config.sea.psi.ch',
'15 K closed cycle cryostat',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for cti5.config',
config='cti5.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
)

17
cfg/main/cti7_cfg.py Normal file
View File

@ -0,0 +1,17 @@
Node('cti7.config.sea.psi.ch',
'30 K - 475 K closed cycle cryostat',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for cti7.config',
config='cti7.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
)

24
cfg/main/cti7ht_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('cti7ht.config.sea.psi.ch',
'30 K - 475 K closed cycle cryostat with hot stagge',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for cti7ht.config',
config='cti7ht.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
meaning=['temperature', 20],
io='sea_main',
sea_object='tt',
)
Mod('th',
'frappy_psi.sea.SeaReadable', 'CTI cold finger temperature',
io='sea_main',
sea_object='tt',
rel_paths = ['te'],
)

16
cfg/main/eurotherm_cfg.py Normal file
View File

@ -0,0 +1,16 @@
Node('eurotherm.config.sea.psi.ch',
'Eurotherm controller',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'eurotherm.config',
service = 'main',
)
Mod('te',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature', 20],
sea_object = 'te',
meaning=('temperature', 11),
)

43
cfg/main/fftf_cfg.py Normal file
View File

@ -0,0 +1,43 @@
Node('fftf.config.sea.psi.ch',
'thin film oven for AMOR',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fftf.config',
config='fftf.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
)
Mod('p',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p',
extra_modules=['vacuumpump', 'gasflow', 'tlimit', 'tlimit_without_vacuum'],
)
Mod('gasflow',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='p.gasflow',
)
Mod('vacuumpump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='p',
rel_paths=['vacuumpump', 'tlimit', 'tlimit_without_vacuum'],
)
Mod('table',
'frappy_psi.sea.SeaModule', '',
io='sea_main',
sea_object='table',
)

226
cfg/main/flamemag_cfg.py Normal file
View File

@ -0,0 +1,226 @@
Node('flamemag.psi.ch',
'flame magnet',
interface='tcp://5000',
)
sea_cfg = 'flamemag.config'
Mod('cio',
'frappy_psi.cryoltd.IO',
'IO to cryo ltd software',
uri='tcp://flamemag:3128',
)
Mod('main',
'frappy_psi.cryoltd.Main',
'master module',
io='cio',
)
Mod('B',
'frappy_psi.cryoltd.MainField',
'magnetic field',
channel='Main',
main='main',
constraint=80000.0,
target=Param(
max=35000.0,
),
mode='PERSISTENT',
hw_units='T',
A_to_G=285.73,
ramp=Param(
max=412.0,
),
overshoot={'o': 1.0, 't': 180.0},
degauss={'s': 500.0, 'd': 30.0, 'f': 5.0, 't': 120.0},
tolerance=5.0,
wait_switch_on = 30,
wait_switch_off = 30,
wait_stable_field=180.0,
)
Mod('Bx',
'frappy_psi.cryoltd.ComponentField',
'magnetic field x component',
channel='VMX',
main='main',
check_against='B',
target=Param(
max=200.0,
),
hw_units='A',
A_to_G=4.134,
ramp=Param(
max=23.0,
),
tolerance=1.0,
)
Mod('By',
'frappy_psi.cryoltd.ComponentField',
'magnetic field y component',
channel='VMY',
main='main',
check_against='B',
target=Param(
max=100.0,
),
hw_units='A',
A_to_G=4.1117,
ramp=Param(
max=22.9,
),
tolerance=1.0,
)
Mod('Bz',
'frappy_psi.cryoltd.ComponentField',
'magnetic field z component',
channel='VMZ',
main='main',
check_against='B',
target=Param(
max=100.0,
),
hw_units='A',
A_to_G=5.74,
ramp=Param(
max=33.6,
),
tolerance=1.0,
)
Mod('compressorA',
'frappy_psi.cryoltd.Compressor',
'compressor A',
channel='A',
main='main',
)
Mod('compressorB',
'frappy_psi.cryoltd.Compressor',
'compressor B',
channel='B',
main='main',
)
Mod('T_stage1_A',
'frappy_psi.cryoltd.Temperature', '',
channel='1st Stage A',
main='main',
)
Mod('T_stage2_A',
'frappy_psi.cryoltd.Temperature', '',
channel='2nd Stage A',
main='main',
)
Mod('T_stage1_B',
'frappy_psi.cryoltd.Temperature', '',
channel='1st Stage B',
main='main',
)
Mod('T_stage2_B',
'frappy_psi.cryoltd.Temperature', '',
channel='2nd Stage B',
main='main',
)
Mod('T_top_A',
'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet A (Top)',
main='main',
)
Mod('T_bottom_A',
'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet A (Bottom)',
main='main',
)
Mod('T_top_B',
'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet B (Top)',
main='main',
)
Mod('T_bottom_B',
'frappy_psi.cryoltd.Temperature', '',
channel='Inner Magnet B (Bottom)',
main='main',
)
Mod('T_Z_shim',
'frappy_psi.cryoltd.Temperature', '',
channel='Z Shim Former',
main='main',
)
Mod('T_XY_shim',
'frappy_psi.cryoltd.Temperature', '',
channel='XY Shim Former',
main='main',
)
Mod('T_XY_vector',
'frappy_psi.cryoltd.Temperature', '',
channel='XY Vector Former',
main='main',
)
Mod('T_radiation_shield',
'frappy_psi.cryoltd.Temperature', '',
channel='Radiation Shield',
main='main',
)
Mod('T_persistent_joints',
'frappy_psi.cryoltd.Temperature', '',
channel='Persistent Joints',
main='main',
)
Mod('T_outer_A',
'frappy_psi.cryoltd.Temperature', '',
channel='Outer Magnet A',
main='main',
)
Mod('T_outer_B',
'frappy_psi.cryoltd.Temperature', '',
channel='Outer Magnet B',
main='main',
)
Mod('T_shim_B',
'frappy_psi.cryoltd.Temperature', '',
channel='Z Shim Former B',
main='main',
)
Mod('T_bore_shield',
'frappy_psi.cryoltd.Temperature', '',
channel='Bore Radiation Shield',
main='main',
)
Mod('T_XYZ_shim',
'frappy_psi.cryoltd.Temperature', '',
channel='XYZ Shim Plate',
main='main',
)
Mod('T_Z_shim_switch',
'frappy_psi.cryoltd.Temperature', '',
channel='Z Shim Switch',
main='main',
)
Mod('T_main_switch',
'frappy_psi.cryoltd.Temperature', '',
channel='Main Coil Switch',
main='main',
)

61
cfg/main/flamp_cfg.py Normal file
View File

@ -0,0 +1,61 @@
Node('flamp.config.sea.psi.ch',
'lamp oven control (from manuel knecht)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for flamp.config',
config='flamp.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['.', 't1'],
)
Mod('t2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['t2'],
)
Mod('current',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='current',
extra_modules=['i1,', 'i2,', 'i3,', 'i4'],
)
Mod('i1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='current.i1',
)
Mod('i2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='current.i2',
)
Mod('i3',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='current.i3',
)
Mod('i4',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='current.i4',
)
Mod('pv',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='pv',
)

24
cfg/main/fs_cfg.py Normal file
View File

@ -0,0 +1,24 @@
Node('fs.config.sea.psi.ch',
'small furnace',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fs.config',
config='fs.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm'],
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts'],
)

25
cfg/main/ft_cfg.py Normal file
View File

@ -0,0 +1,25 @@
Node('ft.config.sea.psi.ch',
'FT tantalum furnace (1400 K)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fw.config',
config='ft.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
meaning=['temperature', 20],
rel_paths=['ts', 'set'],
)
Mod('t2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm'],
)

25
cfg/main/fw_cfg.py Normal file
View File

@ -0,0 +1,25 @@
Node('ft.config.sea.psi.ch',
'FW ILL furnace with W5 thermnocouple (1800 K), old power rack',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for fw.config',
config='fw.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature', 20],
sea_object='tt',
rel_paths=['ts', 'set'],
)
Mod('t2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['t2'],
)

21
cfg/main/haake_cfg.py Normal file
View File

@ -0,0 +1,21 @@
Node('haakeuro.config.sea.psi.ch',
'Haake thermostat + Eurotherm controller',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haake.config',
service = 'main',
)
Mod('th',
'frappy_psi.sea.SeaDrivable', '',
meaning = ('temperature', 10),
io = 'sea_main',
sea_object = 'th',
extra_modules=['t2'],
)
Mod('ts',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='th.t2',
)

19
cfg/main/haakeuro_cfg.py Normal file
View File

@ -0,0 +1,19 @@
Node('haakeuro.config.sea.psi.ch',
'Haake thermostat + Eurotherm controller',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for haakeuro.config',
config = 'haakeuro.config',
service = 'main',
)
Mod('th',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'th',
)
Mod('te',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'te',
)

68
cfg/main/ill1_cfg.py Normal file
View File

@ -0,0 +1,68 @@
Node('ill1.config.sea.psi.ch',
'orange cryostat with 50 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill1.config',
config='ill1.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

68
cfg/main/ill2_cfg.py Normal file
View File

@ -0,0 +1,68 @@
Node('ill2.config.sea.psi.ch',
'orange cryostat with 70 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill2.config',
config='ill2.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

74
cfg/main/ill3_cfg.py Normal file
View File

@ -0,0 +1,74 @@
Node('cfg/main/ill3.cfg',
'orange cryofurnace with 70 mm sample space (low T)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill3.config',
config='ill3.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='nvflow',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

68
cfg/main/ill4_cfg.py Normal file
View File

@ -0,0 +1,68 @@
Node('ill4.config.sea.psi.ch',
'orange cryostat with 70 mm sample space (FOCUS)',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill4.config',
config='ill4.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

68
cfg/main/ill5_cfg.py Normal file
View File

@ -0,0 +1,68 @@
Node('ill5.config.sea.psi.ch',
'orange cryostat with 100 mm sample space',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main SEA connection to ill5.config',
config='ill5.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)

104
cfg/main/ill5pgas5_cfg.py Normal file
View File

@ -0,0 +1,104 @@
Node('ill5pgas5.config.sea.psi.ch',
'orange cryostat with 100 mm sample space and pgas5 pressure cell',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ill5pgas5.config',
config='ill5pgas5.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('pauto',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='pauto',
)
Mod('T_capillary',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tc',
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
extra_modules=['h'],
visibility=2,
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
single_module='cc.h',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='nvflow',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('pccu',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='pccu',
)
Mod('p',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p',
)
Mod('i1',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='i1',
)

134
cfg/main/jtccr_cfg.py Normal file
View File

@ -0,0 +1,134 @@
Node('jtccr.config.sea.psi.ch',
'CCR with JT-stage',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for jtccr.config',
config='jtccr.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tt', 'set'],
)
Mod('T_ccr',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ccr'],
)
Mod('jtccr',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='jtccr',
extra_modules=['v1','v2','v3','v4','v5','v6','v7','v8','v9','v10','vm'],
)
Mod('v1',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v1',
)
Mod('v2',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v2',
)
Mod('v3',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v3',
)
Mod('v4',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v4',
)
Mod('v5',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v5',
)
Mod('v6',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v6',
)
Mod('v7',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v7',
)
Mod('v8',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v8',
)
Mod('v9',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v9',
)
Mod('v10',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.v10',
)
Mod('vm',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
single_module='jtccr.vm',
)
Mod('p1',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p1',
)
Mod('p2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p2',
)
Mod('p3',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p3',
)
Mod('p4',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='p4',
)
Mod('pressreg',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='pressreg',
)
Mod('epc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='epc',
)

79
cfg/main/ma02_cfg.py Normal file
View File

@ -0,0 +1,79 @@
Node('ma02.config.sea.psi.ch',
'1.8 Tesla horizontal cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma02.config',
config='ma02.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma02-ts.psi.ch:3003',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='CHECK',
)

89
cfg/main/ma10_cfg.py Normal file
View File

@ -0,0 +1,89 @@
Node('ma10.config.sea.psi.ch',
'10 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma10.config',
config='ma10.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
rel_paths=['.', 'gen', 'ips'],
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma10-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
target_min = -180,
target_max = 360,
encoder_mode='READ',
backlash=-1,
)

102
cfg/main/ma10heat_cfg.py Normal file
View File

@ -0,0 +1,102 @@
Node('ma10.config.sea.psi.ch',
'10 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma10.config',
config='ma10heat.config',
service='main',
)
Mod('ts',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['ts', 'set']
)
Mod('tm',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm', 'setvti']
)
Mod('ts2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts_2']
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma10-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
sign=-1,
target_min = -180,
target_max = 360,
encoder_mode='READ',
)

109
cfg/main/ma10high_t_cfg.py Normal file
View File

@ -0,0 +1,109 @@
Node('ma10.config.sea.psi.ch',
'10 Tesla vertical cryomagnet',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma10.config',
config='ma10high_t.config',
service='main',
)
Mod('th',
'frappy_psi.sea.SeaReadable',
'sample heater temperature',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['ts', 'setsamp']
)
Mod('tm',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='tt',
rel_paths=['tm', '.', 'set']
)
Mod('ts',
'frappy_psi.parmod.Converging',
'test for parmod',
unit='K',
read='th.value',
write='th.setsamp',
meaning=['temperature', 20],
settling_time=20,
tolerance=1,
)
Mod('ts2',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tt',
rel_paths=['ts_2']
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('om_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma10-ts.psi.ch:3004',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used for omega',
io='om_io',
sign=-1,
target_min = -180,
target_max = 360,
encoder_mode='READ',
)

115
cfg/main/ma11_cfg.py Normal file
View File

@ -0,0 +1,115 @@
Node('ma11.config.sea.psi.ch',
'MA11 cryomagnet for SANS',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma11.config',
config='ma11.config',
service='main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
meaning=['temperature_regulation', 27],
sea_object='tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='nv',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='hemot',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ln2fill',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='hefill',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lev',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='mf',
)
Mod('tcoil',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='tcoil',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='table',
)
Mod('ccu2',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='ccu2',
)
Mod('lnv',
'frappy_psi.sea.SeaWritable', '',
io='sea_main',
sea_object='lnv',
)
Mod('lpr',
'frappy_psi.sea.SeaDrivable', '',
io='sea_main',
sea_object='lpr',
)
Mod('lambdawatch',
'frappy_psi.sea.SeaReadable', '',
io='sea_main',
sea_object='lambdawatch',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'dom motor IO',
uri='ma11-ts.psi.ch:3005',
)
Mod('stickrot',
'frappy_psi.phytron.Motor',
'stick rotation, typically not used as omega',
io='stick_io',
encoder_mode='NO',
)

98
cfg/main/ma15_cfg.py Normal file
View File

@ -0,0 +1,98 @@
Node('ma15.config.sea.psi.ch',
'''14.9 Tesla superconducting cryomagnet''',
)
Mod('sea_main',
'frappy_psi.sea.SeaClient',
'main sea connection for ma15.config',
config = 'ma15.config',
service = 'main',
)
Mod('tt',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
meaning=['temperature_regulation', 27],
sea_object = 'tt',
rel_paths=['tm', '.', 'set', 'dblctrl'],
)
Mod('cc',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'cc',
)
Mod('nv',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'nv',
)
Mod('hefill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hefill',
)
Mod('hepump',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'hepump',
)
Mod('hemot',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'hemot',
)
Mod('nvflow',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'nvflow',
)
Mod('mf',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'mf',
)
Mod('lev',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'lev',
)
Mod('ln2fill',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'ln2fill',
)
Mod('tcoil',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'tcoil',
)
Mod('ccu2',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'ccu2',
)
Mod('lnv',
'frappy_psi.sea.SeaWritable', '',
io = 'sea_main',
sea_object = 'lnv',
)
Mod('lpr',
'frappy_psi.sea.SeaDrivable', '',
io = 'sea_main',
sea_object = 'lpr',
)
Mod('table',
'frappy_psi.sea.SeaReadable', '',
io = 'sea_main',
sea_object = 'table',
)
Mod('stick_io',
'frappy_psi.phytron.PhytronIO',
'om motor IO',
uri='ma15-ts.psi.ch:3005',
)
Mod('om',
'frappy_psi.phytron.Motor',
'stick rotation, typically used as omega',
io='stick_io',
encoder_mode='CHECK',
)

Some files were not shown because too many files have changed in this diff Show More