It is possible to call db_post_events() passing NULL for pfield (the second argument) which triggers an event with the given mask on all fields of the relevant record. Currently the only code that actually calls db_post_events() this way is executed when an alarm handler does a DBR_PUT_ACKT or DBR_PUT_ACKS to the record.
I have just confirmed that acknowledging an alarm causes an event to be emitted to a client that is monitoring the EGU field of a record. It would be fairly straight-forward for the standard record types to be modified to report alarm severity changes on all fields using this technique. However each call to db_post_events() does cause a separate event to be reported to the client, and I don't see any way to avoid double events for those fields for which the monitor() routine already calls dp_post_events().
The question we need to answer is whether we want to do this, which I think is a fairly significant change in behavior.
It is possible to call db_post_events() passing NULL for pfield (the second argument) which triggers an event with the given mask on all fields of the relevant record. Currently the only code that actually calls db_post_events() this way is executed when an alarm handler does a DBR_PUT_ACKT or DBR_PUT_ACKS to the record.
I have just confirmed that acknowledging an alarm causes an event to be emitted to a client that is monitoring the EGU field of a record. It would be fairly straight-forward for the standard record types to be modified to report alarm severity changes on all fields using this technique. However each call to db_post_events() does cause a separate event to be reported to the client, and I don't see any way to avoid double events for those fields for which the monitor() routine already calls dp_post_events().
The question we need to answer is whether we want to do this, which I think is a fairly significant change in behavior.