30 lines
584 B
Python
30 lines
584 B
Python
import functools
|
|
import threading
|
|
|
|
from epics import get_pv as PV
|
|
|
|
from log import log
|
|
|
|
|
|
def toggle(func):
|
|
@functools.wraps(func)
|
|
def wrapper(value=None, pvname=None, **kwargs):
|
|
fn = func.__name__
|
|
if not value:
|
|
log.info(f"{fn}: ignoring value={repr(value)}")
|
|
return
|
|
|
|
func(value=value, pvname=pvname, **kwargs)
|
|
|
|
pv = PV(pvname)
|
|
call_later(pv.put, 0)
|
|
log.info(f"{fn}: done")
|
|
|
|
return wrapper
|
|
|
|
|
|
def call_later(func, *args, **kwargs):
|
|
threading.Thread(target=func, args=args, kwargs=kwargs).start()
|
|
|
|
|