docs: updates to leverage mkdocs material admonitions
This commit is contained in:
parent
5b41b4e5be
commit
0053ddb57d
13 changed files with 533 additions and 436 deletions
|
@ -1,8 +1,7 @@
|
|||
# EMANE Antenna Profiles
|
||||
* Table of Contents
|
||||
{:toc}
|
||||
|
||||
## Overview
|
||||
|
||||
Introduction to using the EMANE antenna profile in CORE, based on the example
|
||||
EMANE Demo linked below.
|
||||
|
||||
|
@ -10,340 +9,348 @@ EMANE Demo linked below.
|
|||
for more specifics.
|
||||
|
||||
## Demo Setup
|
||||
|
||||
We will need to create some files in advance of starting this session.
|
||||
|
||||
Create directory to place antenna profile files.
|
||||
|
||||
```shell
|
||||
mkdir /tmp/emane
|
||||
```
|
||||
|
||||
Create `/tmp/emane/antennaprofile.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE profiles SYSTEM "file:///usr/share/emane/dtd/antennaprofile.dtd">
|
||||
<profiles>
|
||||
<profile id="1"
|
||||
antennapatternuri="/tmp/emane/antenna30dsector.xml"
|
||||
blockagepatternuri="/tmp/emane/blockageaft.xml">
|
||||
<placement north="0" east="0" up="0"/>
|
||||
</profile>
|
||||
<profile id="2"
|
||||
antennapatternuri="/tmp/emane/antenna30dsector.xml">
|
||||
<placement north="0" east="0" up="0"/>
|
||||
</profile>
|
||||
<profile id="1"
|
||||
antennapatternuri="/tmp/emane/antenna30dsector.xml"
|
||||
blockagepatternuri="/tmp/emane/blockageaft.xml">
|
||||
<placement north="0" east="0" up="0"/>
|
||||
</profile>
|
||||
<profile id="2"
|
||||
antennapatternuri="/tmp/emane/antenna30dsector.xml">
|
||||
<placement north="0" east="0" up="0"/>
|
||||
</profile>
|
||||
</profiles>
|
||||
```
|
||||
|
||||
Create `/tmp/emane/antenna30dsector.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE antennaprofile SYSTEM "file:///usr/share/emane/dtd/antennaprofile.dtd">
|
||||
|
||||
<!-- 30degree sector antenna pattern with main beam at +6dB and gain decreasing by 3dB every 5 degrees in elevation or bearing.-->
|
||||
<antennaprofile>
|
||||
<antennapattern>
|
||||
<elevation min='-90' max='-16'>
|
||||
<bearing min='0' max='359'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-15' max='-11'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-10' max='-6'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-5' max='-1'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='0' max='5'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='6' max='10'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='11' max='15'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='16' max='90'>
|
||||
<bearing min='0' max='359'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
</antennapattern>
|
||||
<antennapattern>
|
||||
<elevation min='-90' max='-16'>
|
||||
<bearing min='0' max='359'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-15' max='-11'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-10' max='-6'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-5' max='-1'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='0' max='5'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='6'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='6' max='10'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='3'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='11' max='15'>
|
||||
<bearing min='0' max='5'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='6' max='10'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='11' max='15'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='16' max='344'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='345' max='349'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='350' max='354'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='355' max='359'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='16' max='90'>
|
||||
<bearing min='0' max='359'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
</antennapattern>
|
||||
</antennaprofile>
|
||||
```
|
||||
|
||||
Create `/tmp/emane/blockageaft.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE antennaprofile SYSTEM "file:///usr/share/emane/dtd/antennaprofile.dtd">
|
||||
|
||||
<!-- blockage pattern: 1) entire aft in bearing (90 to 270) blocked 2) elevation below -10 blocked, 3) elevation from -10 to -1 is at -10dB to -1 dB 3) elevation from 0 to 90 no blockage-->
|
||||
<antennaprofile>
|
||||
<blockagepattern>
|
||||
<elevation min='-90' max='-11'>
|
||||
<bearing min='0' max='359'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-10' max='-10'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-10'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-10'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-9' max='-9'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-9'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-9'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-8' max='-8'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-8'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-8'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-7' max='-7'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-7'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-7'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-6' max='-6'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-5' max='-5'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-5'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-5'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-4' max='-4'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-4'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-4'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-3' max='-3'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-2' max='-2'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-2'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-2'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-1' max='-1'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-1'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-1'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='0' max='90'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
</blockagepattern>
|
||||
<blockagepattern>
|
||||
<elevation min='-90' max='-11'>
|
||||
<bearing min='0' max='359'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-10' max='-10'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-10'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-10'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-9' max='-9'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-9'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-9'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-8' max='-8'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-8'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-8'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-7' max='-7'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-7'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-7'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-6' max='-6'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-6'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-5' max='-5'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-5'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-5'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-4' max='-4'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-4'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-4'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-3' max='-3'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-3'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-2' max='-2'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-2'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-2'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='-1' max='-1'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='-1'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='-1'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
<elevation min='0' max='90'>
|
||||
<bearing min='0' max='89'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
<bearing min='90' max='270'>
|
||||
<gain value='-200'/>
|
||||
</bearing>
|
||||
<bearing min='271' max='359'>
|
||||
<gain value='0'/>
|
||||
</bearing>
|
||||
</elevation>
|
||||
</blockagepattern>
|
||||
</antennaprofile>
|
||||
```
|
||||
|
||||
## Run Demo
|
||||
|
||||
1. Select `Open...` within the GUI
|
||||
1. Load `emane-demo-antenna.xml`
|
||||
1. Click 
|
||||
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||
|
||||
## Example Demo
|
||||
|
||||
This demo will cover running an EMANE event service to feed in antenna,
|
||||
location, and pathloss events to demonstrate how antenna profiles
|
||||
can be used.
|
||||
|
||||
### EMANE Event Dump
|
||||
|
||||
On n1 lets dump EMANE events, so when we later run the EMANE event service
|
||||
you can monitor when and what is sent.
|
||||
|
||||
|
@ -352,38 +359,44 @@ root@n1:/tmp/pycore.44917/n1.conf# emaneevent-dump -i ctrl0
|
|||
```
|
||||
|
||||
### Send EMANE Events
|
||||
|
||||
On the host machine create the following to send EMANE events.
|
||||
|
||||
> **WARNING:** make sure to set the `eventservicedevice` to the proper control
|
||||
> network value
|
||||
!!! warning
|
||||
|
||||
Make sure to set the `eventservicedevice` to the proper control
|
||||
network value
|
||||
|
||||
Create `eventservice.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventservice SYSTEM "file:///usr/share/emane/dtd/eventservice.dtd">
|
||||
<eventservice>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="b.9001.da"/>
|
||||
<generator definition="eelgenerator.xml"/>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="b.9001.da"/>
|
||||
<generator definition="eelgenerator.xml"/>
|
||||
</eventservice>
|
||||
```
|
||||
|
||||
Create `eelgenerator.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventgenerator SYSTEM "file:///usr/share/emane/dtd/eventgenerator.dtd">
|
||||
<eventgenerator library="eelgenerator">
|
||||
<param name="inputfile" value="scenario.eel" />
|
||||
<param name="inputfile" value="scenario.eel"/>
|
||||
<paramlist name="loader">
|
||||
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||
</paramlist>
|
||||
</eventgenerator>
|
||||
```
|
||||
|
||||
Create `scenario.eel` with the following contents.
|
||||
|
||||
```shell
|
||||
0.0 nem:1 antennaprofile 1,0.0,0.0
|
||||
0.0 nem:4 antennaprofile 2,0.0,0.0
|
||||
|
@ -413,23 +426,25 @@ Create `scenario.eel` with the following contents.
|
|||
|
||||
Run the EMANE event service, monitor what is output on n1 for events
|
||||
dumped and see the link changes within the CORE GUI.
|
||||
|
||||
```shell
|
||||
emaneeventservice -l 3 eventservice.xml
|
||||
```
|
||||
|
||||
### Stages
|
||||
|
||||
The events sent will trigger 4 different states.
|
||||
|
||||
* State 1
|
||||
* n2 and n3 see each other
|
||||
* n4 and n3 are pointing away
|
||||
* n2 and n3 see each other
|
||||
* n4 and n3 are pointing away
|
||||
* State 2
|
||||
* n2 and n3 see each other
|
||||
* n1 and n2 see each other
|
||||
* n4 and n3 see each other
|
||||
* n2 and n3 see each other
|
||||
* n1 and n2 see each other
|
||||
* n4 and n3 see each other
|
||||
* State 3
|
||||
* n2 and n3 see each other
|
||||
* n4 and n3 are pointing at each other but blocked
|
||||
* n2 and n3 see each other
|
||||
* n4 and n3 are pointing at each other but blocked
|
||||
* State 4
|
||||
* n2 and n3 see each other
|
||||
* n4 and n3 see each other
|
||||
* n2 and n3 see each other
|
||||
* n4 and n3 see each other
|
||||
|
|
|
@ -1,44 +1,51 @@
|
|||
# EMANE Emulation Event Log (EEL) Generator
|
||||
* Table of Contents
|
||||
{:toc}
|
||||
|
||||
## Overview
|
||||
|
||||
Introduction to using the EMANE event service and eel files to provide events.
|
||||
|
||||
[EMANE Demo 1](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-1)
|
||||
for more specifics.
|
||||
|
||||
## Run Demo
|
||||
|
||||
1. Select `Open...` within the GUI
|
||||
1. Load `emane-demo-eel.xml`
|
||||
1. Click 
|
||||
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||
2. Load `emane-demo-eel.xml`
|
||||
3. Click 
|
||||
4. After startup completes, double click n1 to bring up the nodes terminal
|
||||
|
||||
## Example Demo
|
||||
|
||||
This demo will go over defining an EMANE event service and eel file to drive
|
||||
an emane event service.
|
||||
|
||||
### Viewing Events
|
||||
|
||||
On n1 we will use the EMANE event dump utility to listen to events.
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# emaneevent-dump -i ctrl0
|
||||
```
|
||||
|
||||
### Sending Events
|
||||
|
||||
On the host machine we will create the following files and start the
|
||||
EMANE event service targeting the control network.
|
||||
|
||||
> **WARNING:** make sure to set the `eventservicedevice` to the proper control
|
||||
> network value
|
||||
!!! warning
|
||||
|
||||
Make sure to set the `eventservicedevice` to the proper control
|
||||
network value
|
||||
|
||||
Create `eventservice.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventservice SYSTEM "file:///usr/share/emane/dtd/eventservice.dtd">
|
||||
<eventservice>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="b.9001.f"/>
|
||||
<generator definition="eelgenerator.xml"/>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="b.9001.f"/>
|
||||
<generator definition="eelgenerator.xml"/>
|
||||
</eventservice>
|
||||
```
|
||||
|
||||
|
@ -57,21 +64,23 @@ These configuration items tell the EEL Generator which sentences to map to
|
|||
which plugin and whether to issue delta or full updates.
|
||||
|
||||
Create `eelgenerator.xml` with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventgenerator SYSTEM "file:///usr/share/emane/dtd/eventgenerator.dtd">
|
||||
<eventgenerator library="eelgenerator">
|
||||
<param name="inputfile" value="scenario.eel" />
|
||||
<param name="inputfile" value="scenario.eel"/>
|
||||
<paramlist name="loader">
|
||||
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||
</paramlist>
|
||||
</eventgenerator>
|
||||
```
|
||||
|
||||
Finally, create `scenario.eel` with the following contents.
|
||||
|
||||
```shell
|
||||
0.0 nem:1 pathloss nem:2,90.0
|
||||
0.0 nem:2 pathloss nem:1,90.0
|
||||
|
@ -80,11 +89,13 @@ Finally, create `scenario.eel` with the following contents.
|
|||
```
|
||||
|
||||
Start the EMANE event service using the files created above.
|
||||
|
||||
```shell
|
||||
emaneeventservice eventservice.xml -l 3
|
||||
```
|
||||
|
||||
### Sent Events
|
||||
|
||||
If we go back to look at our original terminal we will see the events logged
|
||||
out to the terminal.
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
# EMANE XML Files
|
||||
* Table of Contents
|
||||
{:toc}
|
||||
|
||||
## Overview
|
||||
|
||||
Introduction to the XML files generated by CORE used to drive EMANE for
|
||||
a given node.
|
||||
|
||||
|
@ -10,12 +9,14 @@ a given node.
|
|||
may provide more helpful details.
|
||||
|
||||
## Run Demo
|
||||
|
||||
1. Select `Open...` within the GUI
|
||||
1. Load `emane-demo-files.xml`
|
||||
1. Click 
|
||||
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||
2. Load `emane-demo-files.xml`
|
||||
3. Click 
|
||||
4. After startup completes, double click n1 to bring up the nodes terminal
|
||||
|
||||
## Example Demo
|
||||
|
||||
We will take a look at the files generated in the example demo provided. In this
|
||||
case we are running the RF Pipe model.
|
||||
|
||||
|
@ -31,6 +32,7 @@ case we are running the RF Pipe model.
|
|||
| \<interface name>-trans.xml | configuration when a raw transport is being used |
|
||||
|
||||
### Listing File
|
||||
|
||||
Below are the files within n1 after starting the demo session.
|
||||
|
||||
```shell
|
||||
|
@ -41,6 +43,7 @@ eth0-phy.xml n1-emane.log usr.local.etc.quagga var.run.quagga
|
|||
```
|
||||
|
||||
### Platform XML
|
||||
|
||||
The root configuration file used to run EMANE for a node is the platform xml file.
|
||||
In this demo we are looking at `n1-platform.xml`.
|
||||
|
||||
|
@ -78,6 +81,7 @@ root@n1:/tmp/pycore.46777/n1.conf# cat n1-platform.xml
|
|||
```
|
||||
|
||||
### NEM XML
|
||||
|
||||
The nem definition will contain reference to the transport, mac, and phy xml
|
||||
definitions being used for a given nem.
|
||||
|
||||
|
@ -93,6 +97,7 @@ root@n1:/tmp/pycore.46777/n1.conf# cat eth0-nem.xml
|
|||
```
|
||||
|
||||
### MAC XML
|
||||
|
||||
MAC layer configuration settings would be found in this file. CORE will write
|
||||
out all values, even if the value is a default value.
|
||||
|
||||
|
@ -115,6 +120,7 @@ root@n1:/tmp/pycore.46777/n1.conf# cat eth0-mac.xml
|
|||
```
|
||||
|
||||
### PHY XML
|
||||
|
||||
PHY layer configuration settings would be found in this file. CORE will write
|
||||
out all values, even if the value is a default value.
|
||||
|
||||
|
@ -149,6 +155,7 @@ root@n1:/tmp/pycore.46777/n1.conf# cat eth0-phy.xml
|
|||
```
|
||||
|
||||
### Transport XML
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# cat eth0-trans-virtual.xml
|
||||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
|
|
|
@ -1,54 +1,62 @@
|
|||
# EMANE GPSD Integration
|
||||
* Table of Contents
|
||||
{:toc}
|
||||
|
||||
## Overview
|
||||
|
||||
Introduction to integrating gpsd in CORE with EMANE.
|
||||
|
||||
[EMANE Demo 0](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-0)
|
||||
may provide more helpful details.
|
||||
|
||||
> **WARNING:** requires installation of [gpsd](https://gpsd.gitlab.io/gpsd/index.html)
|
||||
!!!! warning
|
||||
|
||||
Requires installation of [gpsd](https://gpsd.gitlab.io/gpsd/index.html)
|
||||
|
||||
## Run Demo
|
||||
|
||||
1. Select `Open...` within the GUI
|
||||
1. Load `emane-demo-gpsd.xml`
|
||||
1. Click 
|
||||
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||
2. Load `emane-demo-gpsd.xml`
|
||||
3. Click 
|
||||
4. After startup completes, double click n1 to bring up the nodes terminal
|
||||
|
||||
## Example Demo
|
||||
|
||||
This section will cover how to run a gpsd location agent within EMANE, that will
|
||||
write out locations to a pseudo terminal file. That file can be read in by the
|
||||
gpsd server and make EMANE location events available to gpsd clients.
|
||||
|
||||
### EMANE GPSD Event Daemon
|
||||
|
||||
First create an `eventdaemon.xml` file on n1 with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventdaemon SYSTEM "file:///usr/share/emane/dtd/eventdaemon.dtd">
|
||||
<eventdaemon nemid="1">
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="ctrl0"/>
|
||||
<agent definition="gpsdlocationagent.xml"/>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="ctrl0"/>
|
||||
<agent definition="gpsdlocationagent.xml"/>
|
||||
</eventdaemon>
|
||||
```
|
||||
|
||||
Then create the `gpsdlocationagent.xml` file on n1 with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventagent SYSTEM "file:///usr/share/emane/dtd/eventagent.dtd">
|
||||
<eventagent library="gpsdlocationagent">
|
||||
<param name="pseudoterminalfile" value="gps.pty"/>
|
||||
<param name="pseudoterminalfile" value="gps.pty"/>
|
||||
</eventagent>
|
||||
```
|
||||
|
||||
Start the EMANE event agent. This will facilitate feeding location events
|
||||
out to a pseudo terminal file defined above.
|
||||
|
||||
```shell
|
||||
emaneeventd eventdaemon.xml -r -d -l 3 -f emaneeventd.log
|
||||
```
|
||||
|
||||
Start gpsd, reading in the pseudo terminal file.
|
||||
|
||||
```shell
|
||||
gpsd -G -n -b $(cat gps.pty)
|
||||
```
|
||||
|
@ -59,36 +67,41 @@ EEL Events will be played out from the actual host machine over the designated
|
|||
control network interface. Create the following files in the same directory
|
||||
somewhere on your host.
|
||||
|
||||
> **NOTE:** make sure the below eventservicedevice matches the control network
|
||||
> device being used on the host for EMANE
|
||||
!!! note
|
||||
|
||||
Make sure the below eventservicedevice matches the control network
|
||||
device being used on the host for EMANE
|
||||
|
||||
Create `eventservice.xml` on the host machine with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventservice SYSTEM "file:///usr/share/emane/dtd/eventservice.dtd">
|
||||
<eventservice>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="b.9001.1"/>
|
||||
<generator definition="eelgenerator.xml"/>
|
||||
<param name="eventservicegroup" value="224.1.2.8:45703"/>
|
||||
<param name="eventservicedevice" value="b.9001.1"/>
|
||||
<generator definition="eelgenerator.xml"/>
|
||||
</eventservice>
|
||||
```
|
||||
|
||||
Create `eelgenerator.xml` on the host machine with the following contents.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE eventgenerator SYSTEM "file:///usr/share/emane/dtd/eventgenerator.dtd">
|
||||
<eventgenerator library="eelgenerator">
|
||||
<param name="inputfile" value="scenario.eel" />
|
||||
<param name="inputfile" value="scenario.eel"/>
|
||||
<paramlist name="loader">
|
||||
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||
<item value="commeffect:eelloadercommeffect:delta"/>
|
||||
<item value="location,velocity,orientation:eelloaderlocation:delta"/>
|
||||
<item value="pathloss:eelloaderpathloss:delta"/>
|
||||
<item value="antennaprofile:eelloaderantennaprofile:delta"/>
|
||||
</paramlist>
|
||||
</eventgenerator>
|
||||
```
|
||||
|
||||
Create `scenario.eel` file with the following contents.
|
||||
|
||||
```shell
|
||||
0.0 nem:1 location gps 40.031075,-74.523518,3.000000
|
||||
0.0 nem:2 location gps 40.031165,-74.523412,3.000000
|
||||
|
@ -96,7 +109,8 @@ Create `scenario.eel` file with the following contents.
|
|||
|
||||
Start the EEL event service, which will send the events defined in the file above
|
||||
over the control network to all EMANE nodes. These location events will be received
|
||||
and provided to gpsd. This allow gpsd client to connect to and get gps locations.
|
||||
and provided to gpsd. This allows gpsd client to connect to and get gps locations.
|
||||
|
||||
```shell
|
||||
emaneeventservice eventservice.xml -l 3
|
||||
```
|
||||
|
|
|
@ -1,35 +1,40 @@
|
|||
# EMANE Procomputed
|
||||
* Table of Contents
|
||||
{:toc}
|
||||
|
||||
## Overview
|
||||
|
||||
Introduction to using the precomputed propagation model.
|
||||
|
||||
[EMANE Demo 1](https://github.com/adjacentlink/emane-tutorial/wiki/Demonstration-1)
|
||||
for more specifics.
|
||||
|
||||
## Run Demo
|
||||
|
||||
1. Select `Open...` within the GUI
|
||||
1. Load `emane-demo-precomputed.xml`
|
||||
1. Click 
|
||||
1. After startup completes, double click n1 to bring up the nodes terminal
|
||||
2. Load `emane-demo-precomputed.xml`
|
||||
3. Click 
|
||||
4. After startup completes, double click n1 to bring up the nodes terminal
|
||||
|
||||
## Example Demo
|
||||
This demo is uing the RF Pipe model witht he propagation model set to
|
||||
|
||||
This demo is using the RF Pipe model with the propagation model set to
|
||||
precomputed.
|
||||
|
||||
### Failed Pings
|
||||
|
||||
Due to using precomputed and having not sent any pathloss events, the nodes
|
||||
cannot ping eachother yet.
|
||||
cannot ping each other yet.
|
||||
|
||||
Open a terminal on n1.
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# ping 10.0.0.2
|
||||
connect: Network is unreachable
|
||||
```
|
||||
|
||||
### EMANE Shell
|
||||
|
||||
You can leverage `emanesh` to investigate why packets are being dropped.
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# emanesh localhost get table nems phy BroadcastPacketDropTable0 UnicastPacketDropTable0
|
||||
nem 1 phy BroadcastPacketDropTable0
|
||||
|
@ -43,6 +48,7 @@ nem 1 phy UnicastPacketDropTable0
|
|||
In the example above we can see that the reason packets are being dropped is due to
|
||||
the propogation model and that is because we have not issued any pathloss events.
|
||||
You can run another command to validate if you have received any pathloss events.
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# emanesh localhost get table nems phy PathlossEventInfoTable
|
||||
nem 1 phy PathlossEventInfoTable
|
||||
|
@ -50,15 +56,19 @@ nem 1 phy PathlossEventInfoTable
|
|||
```
|
||||
|
||||
### Pathloss Events
|
||||
|
||||
On the host we will send pathloss events from all nems to all other nems.
|
||||
|
||||
> **NOTE:** make sure properly specify the right control network device
|
||||
!!! note
|
||||
|
||||
Make sure properly specify the right control network device
|
||||
|
||||
```shell
|
||||
emaneevent-pathloss 1:2 90 -i <controlnet device>
|
||||
```
|
||||
|
||||
Now if we check for pathloss events on n2 we will see what was just sent above.
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# emanesh localhost get table nems phy PathlossEventInfoTable
|
||||
nem 1 phy PathlossEventInfoTable
|
||||
|
@ -67,6 +77,7 @@ nem 1 phy PathlossEventInfoTable
|
|||
```
|
||||
|
||||
You should also now be able to ping n1 from n2.
|
||||
|
||||
```shell
|
||||
root@n1:/tmp/pycore.46777/n1.conf# ping -c 3 10.0.0.2
|
||||
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue