feat(io): Add new IO properties and corresponding methods

Added `address`, `byteorder`, and `length` properties to D-Bus
interfaces for IOs. Implemented corresponding property methods in
`ios1_helper.py`.

Signed-off-by: Sven Sager <s.sager@kunbus.com>
This commit is contained in:
Sven Sager
2026-02-02 15:26:50 +01:00
parent 4dd4c814b5
commit afdae78336
2 changed files with 54 additions and 16 deletions

View File

@@ -5,6 +5,7 @@
from gi.overrides.GLib import Variant
from pydbus.generic import signal
from revpimodio2 import RevPiModIO, Cycletools
from revpimodio2.io import IntIO
from .ios1_helper import REVPI_DBUS_BASE_PATH, DbusInterfaceIo
@@ -87,7 +88,10 @@ class InterfaceInpBool(DbusInterfaceIo):
"""
<node>
<interface name="com.revolutionpi.ios1.InpBool">
<property name="address" type="i" access="read"/>
<property name="bmk" type="s" access="read"/>
<property name="defaultvalue" type="b" access="read"/>
<property name="length" type="i" access="read"/>
<property name="name" type="s" access="read"/>
<property name="value" type="b" access="read"/>
</interface>
@@ -96,14 +100,6 @@ class InterfaceInpBool(DbusInterfaceIo):
interface_name = "com.revolutionpi.ios1.InpBool"
@property
def bmk(self) -> str:
return self.io.bmk
@property
def name(self) -> str:
return self.io.name
@property
def value(self) -> bool:
return self.io.value
@@ -113,7 +109,10 @@ class InterfaceOutBool(InterfaceInpBool):
"""
<node>
<interface name="com.revolutionpi.ios1.OutBool">
<property name="address" type="i" access="read"/>
<property name="bmk" type="s" access="read"/>
<property name="defaultvalue" type="b" access="read"/>
<property name="length" type="i" access="read"/>
<property name="name" type="s" access="read"/>
<property name="value" type="b" access="readwrite"/>
</interface>
@@ -127,7 +126,7 @@ class InterfaceOutBool(InterfaceInpBool):
return super().value
@value.setter
def value(self, value: bool):
def value(self, value: bool) -> None:
self.io.value = value
self.io._parentdevice._modio.writeprocimg()
@@ -136,25 +135,39 @@ class InterfaceInpInt(DbusInterfaceIo):
"""
<node>
<interface name="com.revolutionpi.ios1.InpInt">
<property name="address" type="i" access="read"/>
<property name="bmk" type="s" access="read"/>
<property name="byteorder" type="s" access="readwrite"/>
<property name="defaultvalue" type="i" access="read"/>
<property name="length" type="i" access="read"/>
<property name="name" type="s" access="read"/>
<property name="signed" type="b" access="readwrite"/>
<property name="value" type="i" access="read"/>
</interface>
</node>
"""
interface_name = "com.revolutionpi.ios1.InpInt"
io = IntIO # type: IntIO
@property
def bmk(self) -> str:
return self.io.bmk
def byteorder(self) -> str:
return self.io.byteorder
@byteorder.setter
def byteorder(self, value: str) -> None:
self.io.byteorder = value
@property
def name(self) -> str:
return self.io.name
def signed(self) -> bool:
return self.io.signed
@signed.setter
def signed(self, value: bool) -> None:
self.io.signed = value
@property
def value(self) -> bool:
def value(self) -> int:
return self.io.value
@@ -162,8 +175,13 @@ class InterfaceOutInt(InterfaceInpInt):
"""
<node>
<interface name="com.revolutionpi.ios1.OutInt">
<property name="address" type="i" access="read"/>
<property name="bmk" type="s" access="read"/>
<property name="byteorder" type="s" access="readwrite"/>
<property name="defaultvalue" type="i" access="read"/>
<property name="length" type="i" access="read"/>
<property name="name" type="s" access="read"/>
<property name="signed" type="b" access="readwrite"/>
<property name="value" type="i" access="readwrite"/>
</interface>
</node>
@@ -172,10 +190,10 @@ class InterfaceOutInt(InterfaceInpInt):
interface_name = "com.revolutionpi.ios1.OutInt"
@property
def value(self) -> bool:
def value(self) -> int:
return super().value
@value.setter
def value(self, value: bool):
def value(self, value: int):
self.io.value = value
self.io._parentdevice._modio.writeprocimg()