43 lines
893 B
Python
43 lines
893 B
Python
import epics
|
|
|
|
|
|
def make_alarms(rules, callback, alert_delay=1):
|
|
rules = get_pvs(rules) # this is optional and creates all PVs at once
|
|
#check_connections(rules)
|
|
|
|
alarms = []
|
|
for pvname, comparison, trip_point in rules:
|
|
print("creating alarm:", pvname, comparison, trip_point)
|
|
|
|
a = epics.Alarm(
|
|
pvname = pvname, # this can also be a PV object
|
|
comparison = comparison,
|
|
trip_point = trip_point,
|
|
callback = callback,
|
|
alert_delay = alert_delay
|
|
)
|
|
|
|
alarms.append(a)
|
|
|
|
print()
|
|
return alarms
|
|
|
|
|
|
def get_pvs(rules):
|
|
return [(epics.get_pv(n), c, t) for n, c, t in rules]
|
|
|
|
|
|
def check_connections(rules):
|
|
for pv, _c, _t in rules:
|
|
state = pv.wait_for_connection(timeout=0.1)
|
|
if not state:
|
|
print(pv)
|
|
|
|
|
|
def main_loop():
|
|
while True:
|
|
epics.poll()
|
|
|
|
|
|
|