From 857e7ce946fb40e35e9feaa1c9074e30febfeb33 Mon Sep 17 00:00:00 2001
From: Martin Teichmann <martin.teichmann@xfel.eu>
Date: Mon, 24 Jun 2024 16:34:55 +0100
Subject: [PATCH] support inherited channels for terminals

---
 ebpfcat/ethercat.py | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/ebpfcat/ethercat.py b/ebpfcat/ethercat.py
index 8e1c838..3e22b01 100644
--- a/ebpfcat/ethercat.py
+++ b/ebpfcat/ethercat.py
@@ -684,11 +684,12 @@ class Terminal:
                 elif isinstance(v, StructDesc):
                     struct = getattr(self, k)
                     offset = struct.position_offset[None]
-                    for kk, vv in struct.__class__.__dict__.items():
-                        if isinstance(vv, ServiceDesc):
-                            setattr(struct, kk,
-                                    await self.read_object_entry(
-                                        vv.index + offset, vv.subidx))
+                    for ccls in struct.__class__.__mro__:
+                        for kk, vv in ccls.__dict__.items():
+                            if isinstance(vv, ServiceDesc):
+                                setattr(struct, kk,
+                                        await self.read_object_entry(
+                                            vv.index + offset, vv.subidx))
 
     async def set_state(self, state):
         """try to set the state, and return the new state"""
-- 
GitLab