From a1d28dd7a0403d762717987eca55027e8e22bc2e Mon Sep 17 00:00:00 2001 From: Gilles Lefranc Date: Mon, 3 Jul 2023 13:59:00 +0200 Subject: [PATCH 1/2] feat(eep): add ability to provide custom EEP XML file --- enocean/protocol/eep.py | 8 ++++++-- enocean/protocol/packet.py | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/enocean/protocol/eep.py b/enocean/protocol/eep.py index 8da3156..e558c20 100644 --- a/enocean/protocol/eep.py +++ b/enocean/protocol/eep.py @@ -14,11 +14,15 @@ class EEP(object): logger = logging.getLogger('enocean.protocol.eep') - def __init__(self): + def __init__(self, file: str = None): self.init_ok = False self.telegrams = {} - eep_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'EEP.xml') + if file is None: + eep_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'EEP.xml') + else: + eep_path = os.path.join(os.path.dirname(os.curdir), file) + try: if version_info[0] > 2: with open(eep_path, 'r', encoding='UTF-8') as xml_file: diff --git a/enocean/protocol/packet.py b/enocean/protocol/packet.py index 14fdc34..725b363 100644 --- a/enocean/protocol/packet.py +++ b/enocean/protocol/packet.py @@ -259,6 +259,10 @@ def parse(self): self.repeater_count = enocean.utils.from_bitarray(self._bit_status[4:]) return self.parsed + def set_eep_file(self, eep_file): + ''' Set EEP file ''' + self.eep = EEP(eep_file) + def select_eep(self, rorg_func, rorg_type, direction=None, command=None): ''' Set EEP based on FUNC and TYPE ''' # set EEP profile From d091824140991f442b08522ba703145605f96f18 Mon Sep 17 00:00:00 2001 From: Gilles Lefranc Date: Mon, 3 Jul 2023 14:29:00 +0200 Subject: [PATCH 2/2] fix(eep): change set_eep to classmethod --- enocean/protocol/packet.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/enocean/protocol/packet.py b/enocean/protocol/packet.py index 725b363..50b9ce5 100644 --- a/enocean/protocol/packet.py +++ b/enocean/protocol/packet.py @@ -259,9 +259,10 @@ def parse(self): self.repeater_count = enocean.utils.from_bitarray(self._bit_status[4:]) return self.parsed - def set_eep_file(self, eep_file): + @classmethod + def set_eep_file(cls, eep_file): ''' Set EEP file ''' - self.eep = EEP(eep_file) + cls.eep = EEP(eep_file) def select_eep(self, rorg_func, rorg_type, direction=None, command=None): ''' Set EEP based on FUNC and TYPE '''