49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
|
|
import threading, time
|
|
from devsup.hooks import addHook
|
|
from devsup.db import IOScanListThread
|
|
from devsup.util import StoppableThread
|
|
|
|
insts = {}
|
|
|
|
def done(obj):
|
|
print obj,'Expires'
|
|
|
|
class Driver(StoppableThread):
|
|
def __init__(self, name):
|
|
super(Driver,self).__init__()
|
|
self.name = name
|
|
self.scan = IOScanListThread()
|
|
self.value = 0
|
|
addHook('AfterIocRunning', self.start)
|
|
addHook('AtIocExit', self.join)
|
|
|
|
def run(self):
|
|
try:
|
|
while self.shouldRun():
|
|
time.sleep(1.0)
|
|
|
|
val = self.value
|
|
self.value += 1
|
|
self.scan.interrupt(reason=val)
|
|
finally:
|
|
self.finish()
|
|
|
|
def addDrv(name):
|
|
print 'Create driver',name
|
|
insts[name] = Driver(name)
|
|
|
|
class Device(object):
|
|
def __init__(self, rec, args):
|
|
self.driver, self.record = insts[args], rec
|
|
self.allowScan = self.driver.scan.add
|
|
|
|
def detach(self, rec):
|
|
print 'detach',rec
|
|
|
|
def process(self, rec, data):
|
|
if data is not None:
|
|
rec.VAL = data
|
|
|
|
build = Device
|