Dont overwrite all PLC Registers of a Block if only one Register is set
The CERN requirement is, to be able to either keep PLC-values at startup, or to ovewrite them with local values:
A register can be retentive: this is a constant or persistent data which require an initial-value and which is retained in case of controls reset (e.g. persistent settings, configuration parameters, etc.). The controller expert can choose to provide the initialization value from the controller or from the FEC: MASTER: The data is retentive and its initial-value is stored in the controller memory. SLAVE: The data is retentive and its initial-value is provided by the client process. NONE: The register does not require any synchronization (volatile data).
IMO, this behavior anyhow should be the default. In any case we should take care to dont overwrite all Registers of a Block if only one Register actually is set ( do a "get" before the "set" in such a case )
Another solution could be a constant-register, which is set only once during startup. Not possible to change during runtime. The used value could be defined in the silecsdesign ( or in the deploy, if it is device-specific ?)
Since it actually is not related, we should remove the volatile-field.