[WIP] further fixes for linse-fi
This commit is contained in:
@ -21,7 +21,7 @@
|
||||
import os
|
||||
from glob import glob
|
||||
from frappy.core import Readable, Writable, Parameter, BoolType, StringType,\
|
||||
FloatRange, Property, TupleOf, ERROR, IDLE
|
||||
EnumType, FloatRange, Property, TupleOf, ERROR, IDLE
|
||||
from frappy.errors import ConfigError, OutOfRangeError
|
||||
from math import log
|
||||
|
||||
@ -41,7 +41,7 @@ class Base:
|
||||
for basepath in basepaths:
|
||||
for devclass in ([self.devclass] if isinstance(self.devclass, str) else self.devclass):
|
||||
devpath = f'{basepath}/{devclass}'
|
||||
if os.path.exists(devpath):
|
||||
if os.path.exists(f'{devpath}/{self.addr}'):
|
||||
self._devpath = devpath
|
||||
return
|
||||
else:
|
||||
@ -64,10 +64,17 @@ class Base:
|
||||
|
||||
class DigitalInput(Base, Readable):
|
||||
value = Parameter('input state', BoolType())
|
||||
devclass = 'digital_in'
|
||||
true_level = Property('level representig True', EnumType(low=0, high=1), default=1)
|
||||
devclass = 'digital_in', 'digital_io'
|
||||
|
||||
def initModule(self):
|
||||
super().initModule()
|
||||
self.log.info('devpath %r', self._devpath)
|
||||
if self.addr.startswith('dt'):
|
||||
self.write(f'{self.addr}_mode','inp')
|
||||
|
||||
def read_value(self):
|
||||
return self.read(self.addr, 1)
|
||||
return self.read(self.addr, 1) == self.true_level
|
||||
|
||||
|
||||
class DigitalOutput(DigitalInput, Writable):
|
||||
@ -75,7 +82,7 @@ class DigitalOutput(DigitalInput, Writable):
|
||||
devclass = 'digital_out', 'relay'
|
||||
|
||||
def write_target(self, value):
|
||||
self.write(self.addr, value, 1)
|
||||
self.write(self.addr, value == self.true_level, 1)
|
||||
|
||||
|
||||
class AnalogInput(Base, Readable):
|
||||
|
Reference in New Issue
Block a user