From 157f6b5c104207efb427a6e5010dbac4a8009c18 Mon Sep 17 00:00:00 2001 From: Bastian Schroll Date: Sun, 27 Oct 2019 21:08:23 +0100 Subject: [PATCH] add descriptor module and docu --- docu/docs/modul/descriptor.md | 65 +++++++++++++++++++++++++++++++++++ docu/mkdocs.yml | 1 + module/descriptor.py | 31 +++++++++-------- 3 files changed, 83 insertions(+), 14 deletions(-) create mode 100644 docu/docs/modul/descriptor.md diff --git a/docu/docs/modul/descriptor.md b/docu/docs/modul/descriptor.md new file mode 100644 index 0000000..30d9b13 --- /dev/null +++ b/docu/docs/modul/descriptor.md @@ -0,0 +1,65 @@ +#
Descriptor
+--- + +## Beschreibung +Mit diesem Modul können einem Alarmpaket beliebige Beschreibung in Abhänigkeit der enthaltenen Informationen im Paket hinzugefügt werden. + +## Resource +`descriptor` + +## Konfiguration + +Informationen zum Aufbau eines [BOSWatch Pakets](../develop/packet.md) + +|Feld|Beschreibung|Default| +|----|------------|-------| +|scanField|Feld des BW Pakets welches geprüft werden soll|| +|descrField|Name des Feldes im BW Paket in welchem die Beschreibung gespeichert werden soll|| +|wildcard|Optional: Es kann für das angelegte `descrField` automatisch ein Wildcard registriert werden|None| +|descriptions|Liste der Beschreibungen|| + +#### `descriptions:` + +|Feld|Beschreibung|Default| +|----|------------|-------| +|for|Inhalt im `scanField` auf welchem geprüft werden soll|| +|add|Beschreibungstext welcher im `descrField` hinterlegt werden soll|| + +**Beispiel:** +```yaml +- type: module + res: descriptor + config: + - scanField: zvei + descrField: description + wildcard: "{DESCR}" + descriptions: + - for: 12345 + add: FF DescriptorTest + - for: 45678 + add: FF TestDescription + - scanField: status + descrField: fmsStatDescr + wildcard: "{STATUSTEXT}" + descriptions: + - for: 1 + add: Frei (Funk) + - for: 2 + add: Frei (Wache) + - ... +``` + +--- +## Abhängigkeiten + +- keine + +--- +## Paket Modifikationen + +- Wenn im Paket das Feld `scanField` vorhanden ist, wird das Feld `descrField` dem Paket hinzugefügt + +--- +## Zusätzliche Wildcards + +- Von der Konfiguration abhängig \ No newline at end of file diff --git a/docu/mkdocs.yml b/docu/mkdocs.yml index 1942050..c8432d3 100644 --- a/docu/mkdocs.yml +++ b/docu/mkdocs.yml @@ -20,6 +20,7 @@ nav: - Module: - Mode Filter: modul/mode_filter.md - Regex Filter: modul/regex_filter.md + - Descriptor: modul/descriptor.md - Plugins: tbd.md - Entwickler: - Eigenes Modul/Plugin schreiben: develop/ModulPlugin.md diff --git a/module/descriptor.py b/module/descriptor.py index a0d7d15..35d41e5 100644 --- a/module/descriptor.py +++ b/module/descriptor.py @@ -9,10 +9,10 @@ German BOS Information Script by Bastian Schroll -@file: template_module.py -@date: 01.03.2019 +@file: descriptor.py +@date: 27.10.2019 @author: Bastian Schroll -@description: Template Module File +@description: Module to add descriptions to bwPackets """ import logging from module.module import Module @@ -26,28 +26,31 @@ logging.debug("- %s loaded", __name__) class BoswatchModule(Module): - """!Description of the Module""" + """!Adds descriptions to bwPackets""" def __init__(self, config): """!Do not change anything here!""" super().__init__(__name__, config) # you can access the config class on 'self.config' def onLoad(self): """!Called by import of the plugin""" - pass + for descriptor in self.config: + if descriptor.get("wildcard"): + self.registerWildcard(descriptor.get("wildcard"), descriptor.get("descrField")) def doWork(self, bwPacket): """!start an run of the module. @param bwPacket: A BOSWatch packet instance""" - if bwPacket.get("mode") == "fms": - pass - elif bwPacket.get("mode") == "zvei": - pass - elif bwPacket.get("mode") == "pocsag": - pass - elif bwPacket.get("mode") == "msg": - pass - + for descriptor in self.config: + for description in descriptor.get("descriptions"): + if not bwPacket.get(descriptor.get("scanField")): + break # scanField is not available in this packet + bwPacket.set(descriptor.get("descrField"), description.get("for")) + if str(description.get("for")) == str(bwPacket.get(descriptor.get("scanField"))): + logging.debug("Description '%s' added in packet field '%s'", description.get("add"), + descriptor.get("descrField")) + bwPacket.set(descriptor.get("descrField"), description.get("add")) + break # this descriptor has found a description - run next descriptor return bwPacket def onUnload(self):