diff --git a/daemon/core/emane/bypass.py b/daemon/core/emane/bypass.py index df3e10ed..b2fce32d 100644 --- a/daemon/core/emane/bypass.py +++ b/daemon/core/emane/bypass.py @@ -2,11 +2,11 @@ EMANE Bypass model for CORE """ -from core.emane.emanemodel import EmaneModel +from core.emane import emanemodel from core.enumerations import ConfigDataTypes -class EmaneBypassModel(EmaneModel): +class EmaneBypassModel(emanemodel.EmaneModel): name = "emane_bypass" library = "bypassmaclayer" @@ -16,7 +16,5 @@ class EmaneBypassModel(EmaneModel): "There are no parameters for the bypass model."), ] _config_phy = [] - - @property - def config_groups(self): - return "Bypass Parameters:1-1" + config_matrix = _config_mac + _config_phy + config_groups = "Bypass Parameters:1-1" diff --git a/daemon/core/emane/commeffect.py b/daemon/core/emane/commeffect.py index 73dd5c2a..71f3a37d 100644 --- a/daemon/core/emane/commeffect.py +++ b/daemon/core/emane/commeffect.py @@ -3,7 +3,7 @@ commeffect.py: EMANE CommEffect model for CORE """ from core import logger -from core.emane.emanemodel import EmaneModel +from core.emane import emanemodel from core.enumerations import ConfigDataTypes try: @@ -24,7 +24,7 @@ def convert_none(x): return int(x) -class EmaneCommEffectModel(EmaneModel): +class EmaneCommEffectModel(emanemodel.EmaneModel): name = "emane_commeffect" config_matrix = [ @@ -35,9 +35,7 @@ class EmaneCommEffectModel(EmaneModel): ("defaultconnectivitymode", ConfigDataTypes.BOOL.value, "1", "On,Off", "defaultconnectivity"), ] - @property - def config_groups(self): - return "CommEffect SHIM Parameters:1-%d" % len(self.config_matrix) + config_groups = "CommEffect SHIM Parameters:1-%d" % len(config_matrix) def build_xml_files(self, emane_manager, interface): """ diff --git a/daemon/core/emane/emanemodel.py b/daemon/core/emane/emanemodel.py index a2fda909..ef775a93 100644 --- a/daemon/core/emane/emanemodel.py +++ b/daemon/core/emane/emanemodel.py @@ -9,9 +9,10 @@ from core.mobility import WirelessModel from core.xml import xmlutils -def classproperty(_): - def __get__(self, _, inst): - return self.fget.__get__(None, inst)() +def create_config_groups(config_mac, config_matrix): + mac_len = len(config_mac) + config_len = len(config_matrix) + return "MAC Parameters:1-%d|PHY Parameters:%d-%d" % (mac_len, mac_len + 1, config_len) def value_to_params(doc, name, value): @@ -129,22 +130,12 @@ class EmaneModel(WirelessModel): _config_phy = EmaneUniversalModel.config_matrix library = None config_ignore = set() + config_matrix = _config_mac + _config_phy + config_groups = create_config_groups(_config_mac, config_matrix) def __init__(self, session, object_id=None): WirelessModel.__init__(self, session, object_id) - @classproperty - @classmethod - def config_matrix(cls): - return cls._config_mac + cls._config_phy - - @classproperty - @classmethod - def config_groups(cls): - mac_len = len(cls._config_mac) - config_len = len(cls.config_matrix) - return "MAC Parameters:1-%d|PHY Parameters:%d-%d" % (mac_len, mac_len + 1, config_len) - def build_xml_files(self, emane_manager, interface): """ Builds xml files for emane. Includes a nem.xml file that points to both mac.xml and phy.xml definitions. diff --git a/daemon/core/emane/ieee80211abg.py b/daemon/core/emane/ieee80211abg.py index 09c3b7bd..1bb1b021 100644 --- a/daemon/core/emane/ieee80211abg.py +++ b/daemon/core/emane/ieee80211abg.py @@ -2,11 +2,11 @@ ieee80211abg.py: EMANE IEEE 802.11abg model for CORE """ -from core.emane.emanemodel import EmaneModel +from core.emane import emanemodel from core.enumerations import ConfigDataTypes -class EmaneIeee80211abgModel(EmaneModel): +class EmaneIeee80211abgModel(emanemodel.EmaneModel): # model name name = "emane_ieee80211abg" library = "ieee80211abgmaclayer" @@ -45,6 +45,9 @@ class EmaneIeee80211abgModel(EmaneModel): ("wmmenable", ConfigDataTypes.BOOL.value, "0", "On,Off", "WiFi Multimedia (WMM)"), ] + config_matrix = _config_mac + emanemodel.EmaneModel._config_phy + config_groups = emanemodel.create_config_groups(_config_mac, config_matrix) + def create_mac_doc(self, emane_manager, values): names = self.getnames() mac_names = names[:len(self._config_mac)] diff --git a/daemon/core/emane/rfpipe.py b/daemon/core/emane/rfpipe.py index 184f32d8..b104832c 100644 --- a/daemon/core/emane/rfpipe.py +++ b/daemon/core/emane/rfpipe.py @@ -2,11 +2,11 @@ rfpipe.py: EMANE RF-PIPE model for CORE """ -from core.emane.emanemodel import EmaneModel +from core.emane import emanemodel from core.enumerations import ConfigDataTypes -class EmaneRfPipeModel(EmaneModel): +class EmaneRfPipeModel(emanemodel.EmaneModel): # model name name = "emane_rfpipe" library = "rfpipemaclayer" @@ -27,3 +27,6 @@ class EmaneRfPipeModel(EmaneModel): ("radiometricreportinterval", ConfigDataTypes.FLOAT.value, "1.0", "", "R2RI radio metric report interval (sec)"), ] + + config_matrix = _config_mac + emanemodel.EmaneModel._config_phy + config_groups = emanemodel.create_config_groups(_config_mac, config_matrix) diff --git a/daemon/core/emane/tdma.py b/daemon/core/emane/tdma.py index 5f582485..86e7f90a 100644 --- a/daemon/core/emane/tdma.py +++ b/daemon/core/emane/tdma.py @@ -6,12 +6,12 @@ import os from core import constants from core import logger -from core.emane.emanemodel import EmaneModel +from core.emane import emanemodel from core.enumerations import ConfigDataTypes from core.misc import utils -class EmaneTdmaModel(EmaneModel): +class EmaneTdmaModel(emanemodel.EmaneModel): # model name name = "emane_tdma" library = "tdmaeventschedulerradiomodel" @@ -46,6 +46,9 @@ class EmaneTdmaModel(EmaneModel): "enable strict dequeueing to specified queues only"), ] + config_matrix = _config_mac + emanemodel.EmaneModel._config_phy + config_groups = emanemodel.create_config_groups(_config_mac, config_matrix) + def post_startup(self, emane_manager): """ Logic to execute after the emane manager is finished with startup.