docs: updated example custom emane model to use type hinting and embedded it into the emane documentation page, daemon: adjustment to correct rj45 not being provided an iface id when deleting a link from core tlv
This commit is contained in:
parent
90d2d5f0dc
commit
96dddb687d
3 changed files with 88 additions and 21 deletions
|
@ -52,6 +52,7 @@ from core.errors import CoreCommandError, CoreError
|
|||
from core.location.mobility import BasicRangeModel
|
||||
from core.nodes.base import CoreNode, CoreNodeBase, NodeBase
|
||||
from core.nodes.network import WlanNode
|
||||
from core.nodes.physical import Rj45Node
|
||||
from core.services.coreservices import ServiceManager, ServiceShim
|
||||
|
||||
|
||||
|
@ -801,6 +802,12 @@ class CoreHandler(socketserver.BaseRequestHandler):
|
|||
node1_id, node2_id, iface1_data, iface2_data, options, link_type
|
||||
)
|
||||
elif message.flags & MessageFlags.DELETE.value:
|
||||
node1 = self.session.get_node(node1_id, NodeBase)
|
||||
node2 = self.session.get_node(node2_id, NodeBase)
|
||||
if isinstance(node1, Rj45Node):
|
||||
iface1_data.id = node1.iface_id
|
||||
if isinstance(node2, Rj45Node):
|
||||
iface2_data.id = node2.iface_id
|
||||
self.session.delete_link(
|
||||
node1_id, node2_id, iface1_data.id, iface2_data.id, link_type
|
||||
)
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
"""
|
||||
Example custom emane model.
|
||||
"""
|
||||
from typing import Dict, List, Optional, Set
|
||||
|
||||
from core.config import Configuration
|
||||
from core.emane import emanemanifest, emanemodel
|
||||
|
||||
|
||||
|
@ -9,41 +11,45 @@ class ExampleModel(emanemodel.EmaneModel):
|
|||
"""
|
||||
Custom emane model.
|
||||
|
||||
:var str name: defines the emane model name that will show up in the GUI
|
||||
:cvar name: defines the emane model name that will show up in the GUI
|
||||
|
||||
Mac Definition:
|
||||
:var str mac_library: defines that mac library that the model will reference
|
||||
:var str mac_xml: defines the mac manifest file that will be parsed to obtain configuration options,
|
||||
:cvar mac_library: defines that mac library that the model will reference
|
||||
:cvar mac_xml: defines the mac manifest file that will be parsed to obtain configuration options,
|
||||
that will be displayed within the GUI
|
||||
:var dict mac_mac_defaults: allows you to override options that are maintained within the manifest file above
|
||||
:var list mac_mac_config: parses the manifest file and converts configurations into core supported formats
|
||||
:cvar mac_defaults: allows you to override options that are maintained within the manifest file above
|
||||
:cvar mac_config: parses the manifest file and converts configurations into core supported formats
|
||||
|
||||
Phy Definition:
|
||||
NOTE: phy configuration will default to the universal model as seen below and the below section does not
|
||||
have to be included
|
||||
:var str phy_library: defines that phy library that the model will reference, used if you need to
|
||||
:cvar phy_library: defines that phy library that the model will reference, used if you need to
|
||||
provide a custom phy
|
||||
:var str phy_xml: defines the phy manifest file that will be parsed to obtain configuration options,
|
||||
:cvar phy_xml: defines the phy manifest file that will be parsed to obtain configuration options,
|
||||
that will be displayed within the GUI
|
||||
:var dict phy_defaults: allows you to override options that are maintained within the manifest file above
|
||||
:cvar phy_defaults: allows you to override options that are maintained within the manifest file above
|
||||
or for the default universal model
|
||||
:var list phy_config: parses the manifest file and converts configurations into core supported formats
|
||||
:cvar phy_config: parses the manifest file and converts configurations into core supported formats
|
||||
|
||||
Custom Override Options:
|
||||
NOTE: these options default to what's seen below and do not have to be included
|
||||
:var set config_ignore: allows you to ignore options within phy/mac, used typically if you needed to add
|
||||
:cvar config_ignore: allows you to ignore options within phy/mac, used typically if you needed to add
|
||||
a custom option for display within the gui
|
||||
"""
|
||||
|
||||
name = "emane_example"
|
||||
mac_library = "rfpipemaclayer"
|
||||
mac_xml = "/usr/share/emane/manifest/rfpipemaclayer.xml"
|
||||
mac_defaults = {
|
||||
name: str = "emane_example"
|
||||
mac_library: str = "rfpipemaclayer"
|
||||
mac_xml: str = "/usr/share/emane/manifest/rfpipemaclayer.xml"
|
||||
mac_defaults: Dict[str, str] = {
|
||||
"pcrcurveuri": "/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"
|
||||
}
|
||||
mac_config = emanemanifest.parse(mac_xml, mac_defaults)
|
||||
phy_library = None
|
||||
phy_xml = "/usr/share/emane/manifest/emanephy.xml"
|
||||
phy_defaults = {"subid": "1", "propagationmodel": "2ray", "noisemode": "none"}
|
||||
phy_config = emanemanifest.parse(phy_xml, phy_defaults)
|
||||
config_ignore = set()
|
||||
mac_config: List[Configuration] = emanemanifest.parse(mac_xml, mac_defaults)
|
||||
phy_library: Optional[str] = None
|
||||
phy_xml: str = "/usr/share/emane/manifest/emanephy.xml"
|
||||
phy_defaults: Dict[str, str] = {
|
||||
"subid": "1",
|
||||
"propagationmodel": "2ray",
|
||||
"noisemode": "none",
|
||||
}
|
||||
phy_config: List[Configuration] = emanemanifest.parse(phy_xml, phy_defaults)
|
||||
config_ignore: Set[str] = set()
|
||||
|
|
|
@ -116,7 +116,61 @@ placed within the path defined by **emane_models_dir** in the CORE
|
|||
configuration file. This path cannot end in **/emane**.
|
||||
|
||||
Here is an example model with documentation describing functionality:
|
||||
[Example Model](../daemon/examples/myemane/examplemodel.py)
|
||||
```python
|
||||
"""
|
||||
Example custom emane model.
|
||||
"""
|
||||
from typing import Dict, List, Optional, Set
|
||||
|
||||
from core.config import Configuration
|
||||
from core.emane import emanemanifest, emanemodel
|
||||
|
||||
|
||||
class ExampleModel(emanemodel.EmaneModel):
|
||||
"""
|
||||
Custom emane model.
|
||||
|
||||
:cvar name: defines the emane model name that will show up in the GUI
|
||||
|
||||
Mac Definition:
|
||||
:cvar mac_library: defines that mac library that the model will reference
|
||||
:cvar mac_xml: defines the mac manifest file that will be parsed to obtain configuration options,
|
||||
that will be displayed within the GUI
|
||||
:cvar mac_defaults: allows you to override options that are maintained within the manifest file above
|
||||
:cvar mac_config: parses the manifest file and converts configurations into core supported formats
|
||||
|
||||
Phy Definition:
|
||||
NOTE: phy configuration will default to the universal model as seen below and the below section does not
|
||||
have to be included
|
||||
:cvar phy_library: defines that phy library that the model will reference, used if you need to
|
||||
provide a custom phy
|
||||
:cvar phy_xml: defines the phy manifest file that will be parsed to obtain configuration options,
|
||||
that will be displayed within the GUI
|
||||
:cvar phy_defaults: allows you to override options that are maintained within the manifest file above
|
||||
or for the default universal model
|
||||
:cvar phy_config: parses the manifest file and converts configurations into core supported formats
|
||||
|
||||
Custom Override Options:
|
||||
NOTE: these options default to what's seen below and do not have to be included
|
||||
:cvar config_ignore: allows you to ignore options within phy/mac, used typically if you needed to add
|
||||
a custom option for display within the gui
|
||||
"""
|
||||
|
||||
name: str = "emane_example"
|
||||
mac_library: str = "rfpipemaclayer"
|
||||
mac_xml: str = "/usr/share/emane/manifest/rfpipemaclayer.xml"
|
||||
mac_defaults: Dict[str, str] = {
|
||||
"pcrcurveuri": "/usr/share/emane/xml/models/mac/rfpipe/rfpipepcr.xml"
|
||||
}
|
||||
mac_config: List[Configuration] = emanemanifest.parse(mac_xml, mac_defaults)
|
||||
phy_library: Optional[str] = None
|
||||
phy_xml: str = "/usr/share/emane/manifest/emanephy.xml"
|
||||
phy_defaults: Dict[str, str] = {
|
||||
"subid": "1", "propagationmodel": "2ray", "noisemode": "none"
|
||||
}
|
||||
phy_config: List[Configuration] = emanemanifest.parse(phy_xml, phy_defaults)
|
||||
config_ignore: Set[str] = set()
|
||||
```
|
||||
|
||||
## Single PC with EMANE
|
||||
|
||||
|
|
Loading…
Reference in a new issue