1230 Commits

Author SHA1 Message Date
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
c1307cdd03 unify name and module on Attached property
- setting the attribute using the name of an attached module
- getting the attribute results in the module object

+ change names iodev to io, iodevClass to ioClass,
  sendRecv to communicate, HasIodev to HasIO

Change-Id: I200b63a5a7dc1453bf6ac998782b065645201900
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27575
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-01-31 10:57:49 +01:00
b911bc1838 check for problematic value range
A common problematic practice is, to declare the value parameter
with the same FloatRange than the target. Because of measurement
errors, a value might be near, but outside the limit.
In order to avoid this, we force the programmer to declare a
bigger range for the value than for the target, or to
explicitly disable this check on a module property.
It is also fine to declare the value without limits.

This behavior may be disabled via command line option or in the
general config file. For simplicity, FloatRanges inside data
structures are not considered.

+ above command line option is also used to disable the error
  handling on a string to float conversion
+ log appropriate error message for string to float conversion

Change-Id: Ib78ea1fb7c821442bf5847030573c8c27822dea5
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27574
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-01-31 09:12:39 +01:00
26a0f2e078 do not convert string to float
a read method should not reply on the automatic conversion
of the return value from string to a number.

- transitional solution with generalConfig.lazy_numer_validation
+ changing slighly generalInit mechanism: for above feature
  generalConfig.init is not required to be called (i.e. when
  used on the client side)

Change-Id: Ibecce1a45669273c105932acdc0908de55bfd1b9
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27516
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-01-28 16:04:41 +01:00
4f7083bc98 ReadHandler and WriteHandler decorators
modules with a couple of parameters with similar read_* or
write_* methods may handle them by generic methods wrapped
with decorators ReadHandler / WriteHandler

The trinamic driver is included in this change for demonstrating
how it works.

In a further step, the special handling for the iohandler stuff can
be moved away from secop.server and secop.params, using this feature.

+ fix problem on startup of trinamic driver (needs MultiEvent.queue)
+ some other small fixes
+ apply recommended functools.wraps for wrapping

Change-Id: Ibfeff9209f53c47194628463466cee28366e17ac
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27460
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-01-27 17:04:45 +01:00
0909f92e12 UniqueObject
create a class to be used for unique objects.
better for debugging and documentation than just using object()

+ remove unused unique objects

Change-Id: I32f65960ea2fbee4fccbeb49a4e11176b7185aa0
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27455
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-01-17 11:38:15 +01:00
f3450375ce enhance logging
- bin/secop-server options -v and -q applied to console logger only
- level for logfile taken from general config
- option for automatic deletion of old logfiles
- added 'comlog' level (between debug and info)

This allows to run the servers by default with 'comlog' level on
the logfiles, which helps a lot for analyzing very rare communication
errors in retrospect.

to avoid spamming of the normal log files, comlog data is stored
separately, one file per communicator

+ redesign of remote logging (no more need of LoggerAdapter)

Change-Id: Ie156a202b1e7304e50bbe830901bc75872f6ffe2
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27427
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-01-17 10:19:55 +01:00
eb2e8f5f74 fix doc (stringio - > io)
+ bug in secop.lib.classdoc

Change-Id: Ic1f6f2896466ce53dd176a338088b7ee6b8047af
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27428
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-01-13 10:23:38 +01:00
2ef0da68e8 change name of read_hw_status method in sequencer mixin
change name to 'readHwStatus'
needed after commit "check for bad read* and write_* methods"

Change-Id: I27467aa2a3a3bb0db5f418c99f2d2065390a190a
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27394
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-01-11 10:10:11 +01:00
9b38db7706 check for bad read_* and write_* methods
raise a ProgrammingError when a read_<param> or write_<param>
method is defined, but <param> is no parameter.

Change-Id: Iae4e617d078229182a90b202a6f81ebc49050118
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27386
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-01-07 17:44:49 +01:00
8f7fb1e45b improve handling of module init methods
- complain when super call is omitted (this is a common programming
  error in Mixins)
- redesign waiting mechanism for startup

+ rename MultiEvent method 'setfunc' to 'get_trigger'

Change-Id: Ica27a75597321f2571a604a7a55448cffb1bec5e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27369
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-01-07 17:41:59 +01:00
f13e29aad2 introduce general config file
+ redesign general config
+ remove obsolete secop/paths.py

Change-Id: Ice08ec37c54b1a6e2e2e6e29fdaaf0bd2dd725dc
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27362
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2022-01-05 09:05:00 +01:00
c5d228ffc4 add timeouts to MultiEvents
to be used for a follow up change for startup events

Change-Id: Id8816eb8f561dcd8d1473e25a9685e796fb14953
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27364
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-12-22 15:12:56 +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
071ba38b60 remote logging (issue 46)
Change-Id: Id92e66280811b1f871157b5c2ceca65085d2c15b
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27346
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-12-21 09:06:22 +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
b29b1e1b36 entangle.AnalogOutput: fix window mechanism
fix 2 problems:
- in case the window is smaller than the pollinterval, isAtTarget might be False
  for up to the timeout delay
- in case the history is shorter than the window, and the ramp is fast enough to miss
  any points during ramp, isAtTarget is True before the window time is reached.
  This happens because the history is reset on write_target

+ do not wait when target is not changed (by more than precision)

tested!

Change-Id: Ia4ff4378fe91fa93be50168b2883a20b49ebfb6a
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27159
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>
2021-11-17 16:55:43 +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
c91d726f9d 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: Ic7795e305048625558e415ece099e6824df6e2c4
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27135
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 16:48:58 +01:00
1d75d192e5 automatic saving of persistent parameters
change persistent flag to be an enum off/on/auto

Change-Id: I3b1685ea76afb3b7f8c2e6ca63fbf81fa987750e
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27100
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 10:48:10 +01:00
4bf3acab98 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 10:47:52 +01:00
Georg Brandl
eebc9232cd debian: fix email addresses in changelog
Change-Id: I7279f2eb0fecbde5f7f02a983e1b58537b79566f
2021-11-12 09:18:24 +01:00
Jenkins system
c16f159599 [deb] Release v0.12.4 2021-11-11 16:21:19 +01:00
796be752b7 fix command inheritance
Command.ownProperties must be definead in __init__

+ add test for this

Change-Id: I283331be6439a49ec61d28f04869a5b44704236f
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27104
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-11 14:20:10 +01:00
Jenkins system
b8e8d24b50 [deb] Release v0.12.3 2021-11-10 16:33:19 +01:00
45dd14a72c 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-10 16:21:58 +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
ad7cfe4ea0 automatically register subclasses of AsynConn
using __init_subclass__ method.

+ correct typo

Change-Id: I9a57c467efcd138651248f92fbf84195624e0b9a
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27093
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-10 13:50:46 +01:00
47d09e9b08 improve simulation
- customizable simulation interval
- add stop command to SimDrivable

Change-Id: Id4eb0ec465ecc97a115397c295c4a052aceb762c
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27092
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-10 13:50:30 +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
d76d79aebb omit updates of unchanged values within short time
Sometimes it happens, that the same value determined once is
assigned several times to a parameter within a very short period.
Sending multiple updates is not useful in this case.

Change-Id: Icea66934c831fd9b2eac7d0394a124d002469914
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27091
Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de>
Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
2021-11-10 12:34:51 +01:00
a64eb7f33b fix python 3.5 compatibility
- move workaround for PEP487 ty secop.lib.py35compat
- add missing context manager to TCPServer
- remove redundant code in secop/property.py

Change-Id: I0822010f196ad6cec5ec44e990013b79c5d4048b
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27090
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>
2021-11-10 12:34:31 +01:00
3d0d779d81 fix property inheritance
+ remove obsolete filterDescriptor method
+ copying properties should support extensions (e.g. Attached)

Change-Id: I301947a4ae28fcad98250b277c6b0e7e0100eaf9
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27084
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-09 18:21:03 +01:00
3b7cc33f64 fix parameter inheritance
Correct inheritance has to follow the MRO, not only consider
the direct base classes.

Patchset 3: changed only tests, indicating that we need to change the code

Following patchsets include a major change in params.py and
modules.py. The parameter properties for inheritance, corresponding
mainly to the constructor arguments have to be stored separately
from the property values including inherited stuff.

Change-Id: Ibcbccb6abcc22e7e2d91df8f70ef64226684d8cc
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/26805
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>
2021-11-09 15:06:36 +01:00
41489a4a24 show first instead of last traceback on multiple errors
on initialization, the error message are collected and
shown before starting the server together with the traceback
of the last error. This should be the traceback of the
first error instead.

Change-Id: I86d4b42f7d4f98f2ab3b692cd6548e62acffa11b
Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/27011
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-09 14:42: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