Files
frappy/doc/source/magic.rst
Markus Zolliker e1d5170a90 T controller tutorial and improve documentation
add tutorial for Berlin hands-on workshop

+ improve the documentation (hints for structure welcome)
+ remove 'optional' parameter property
  (is not yet used - should not appear in doc)
+ added test property in frappy_demo.cryo alters Parameter class
  ('test' property appears in Parameter doc)

Change-Id: I3ea08f955a92f72451fd23a5ff00d1185c7fb00e
2023-03-06 08:24:15 +01:00

2.0 KiB

Frappy Internals

Frappy is a powerful framework, which does everything behind the scenes you need for getting a SEC node to work. This section describes what the framwork does for you.

Startup

TODO: describe startup: init methods, first polls

Polling

By default, a module inheriting from Readable <frappy.modules.Readable> is polled every pollinterval seconds. More exactly, the doPoll method is called, which by default calls read_value and read_status.

The programmer might override the behaviour of doPoll, often it is wise to super call the inherited method.

Note

Even for modules not inheriting from Readable <frappy.modules.Readable>, doPoll is called regularly. Its default implementation is doing nothing, but may be overridden to do customized polling.

In addition, the read_<param> method is called every slowinterval seconds for all parameters, in case the value was not updated since pollinterval seconds.

The decorator nopoll <frappy.rwhandler.nopoll> might be used on a read_<param> method in order to indicate, that the value is not polled by the slow poll mechanism.

Client Notification

Whenever a parameter is changed by assigning a value to the attribute or by means of the access method, an update message is sent to all activated clients. Frappy implements the extended version of the activate message, where single modules and parameters might be activated.

Type check and type conversion

Assigning a parameter to a value by setting the attribute via self.<param> = <value> or <module>.<param> = <value> involves a type check and possible a type conversion, but not a range check for numeric types. The range check is only done on a change message.

TODO: error handling, logging