Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
TOOL_NAME=desvirt
|
||||
TOOL_URL=https://github.com/des-testbed/desvirt.git
|
||||
TOOL_VERSION=master
|
||||
TOOL_DIR=$(RIOTBASE)/dist/tools/$(TOOL_NAME)/$(TOOL_NAME)
|
||||
|
||||
.PHONY: desvirt-check desvirt-check-topo-file desvirt-check-topo-args desvirt-clean \
|
||||
desvirt-distclean desvirt-define desvirt-undefine desvirt-start desvirt-stop desvirt-list
|
||||
|
||||
desvirt-check:
|
||||
|
||||
ifeq ($(wildcard $(TOOL_DIR)),)
|
||||
git clone $(TOOL_URL) $(TOOL_DIR)
|
||||
cd $(TOOL_DIR) && git reset --hard $(TOOL_VERSION)
|
||||
endif
|
||||
|
||||
desvirt-check-topo-file: desvirt-check
|
||||
|
||||
ifndef TOPO
|
||||
$(error TOPO is not set)
|
||||
endif
|
||||
|
||||
desvirt-check-topo-args: desvirt-check
|
||||
|
||||
ifndef TOPO_TYPE
|
||||
$(error TOPO_TYPE is not set)
|
||||
endif
|
||||
ifndef TOPO_SIZE
|
||||
$(error TOPO_SIZE is not set)
|
||||
endif
|
||||
|
||||
desvirt-define: desvirt-check-topo-file
|
||||
cd $(TOOL_DIR) && ./vnet -d $(TOOL_DIR)/.desvirt/ -n $(basename $(TOPO))
|
||||
|
||||
desvirt-undefine: desvirt-check-topo-file
|
||||
cd $(TOOL_DIR) && ./vnet -u $(TOOL_DIR)/.desvirt/ -n $(basename $(TOPO))
|
||||
|
||||
desvirt-start: desvirt-check-topo-file
|
||||
cd $(TOOL_DIR) && ./vnet -s -n $(basename $(TOPO))
|
||||
|
||||
desvirt-stop: desvirt-check-topo-file
|
||||
cd $(TOOL_DIR) && ./vnet -q -n $(basename $(TOPO))
|
||||
|
||||
desvirt-topology: desvirt-check-topo-args all
|
||||
cd $(TOOL_DIR) && \
|
||||
./topology_creator -e $(ELFFILE) -n riot_native -r ieee802154 -s$(TOPO_SIZE) -t$(TOPO_TYPE) -f $(TOPO_TYPE)$(TOPO_SIZE)
|
||||
|
||||
desvirt-list: desvirt-check
|
||||
cd $(TOOL_DIR) && ./vnet -l
|
||||
|
||||
desvirt-clean::
|
||||
|
||||
ifneq ($(wildcard $(TOOL_DIR)),"")
|
||||
cd $(TOOL_DIR) && git clean -x -f && git reset --hard $(TOOL_VERSION)
|
||||
endif
|
||||
|
||||
desvirt-distclean::
|
||||
rm -rf $(TOOL_DIR)
|
||||
@@ -0,0 +1,126 @@
|
||||
# DESVIRT integration into RIOT
|
||||
|
||||
You can find more information about desvirt at
|
||||
https://github.com/des-testbed/desvirt
|
||||
|
||||
## Control DESVIRT via Make
|
||||
|
||||
### Variables
|
||||
|
||||
This Makefile introduces some additional variables:
|
||||
* TOPO (name of the topology to use)
|
||||
* TOPO_SIZE (size of the topology to use)
|
||||
* TOPO_TYPE (type of the topology to use [line|grid])
|
||||
|
||||
### Targets
|
||||
|
||||
It defines the following targets:
|
||||
* desvirt-topology
|
||||
* desvirt-define
|
||||
* desvirt-undefine
|
||||
* desvirt-list
|
||||
* desvirt-start
|
||||
* desvirt-stop
|
||||
* desvirt-clean
|
||||
* desvirt-distclean
|
||||
|
||||
#### desvirt-topology
|
||||
|
||||
This target creates a new topology file in `RIOTBASE/dist/tools/desvirt/desvirt/.desvirt`
|
||||
It is necessary to supply the type and size of the new topology with `TOPO_TYPE` and `TOPO_SIZE`.
|
||||
The make target will create the topology file with the name `$(TOPO_TYPE)$(TOPO_SIZE)`.
|
||||
Examples:
|
||||
```
|
||||
TOPO_TYPE=line TOPO_SIZE=4 make desvirt-topology
|
||||
TOPO_TYPE=grid TOPO_SIZE=9 make desvirt-topology
|
||||
```
|
||||
The names of the files will be: `line4` and `grid9`.
|
||||
|
||||
#### desvirt-define
|
||||
|
||||
This target defines a new topology. This must be done prior to starting desvirt.
|
||||
```
|
||||
TOPO=line4 make desvirt-define
|
||||
```
|
||||
|
||||
#### desvirt-undefine
|
||||
|
||||
This target undefines a topology.
|
||||
```
|
||||
TOPO=line4 make desvirt-undefine
|
||||
```
|
||||
|
||||
#### desvirt-list
|
||||
|
||||
This target lists all defined topologies.
|
||||
```
|
||||
make desvirt-list
|
||||
```
|
||||
|
||||
#### desvirt-start
|
||||
|
||||
This target starts a new virtualization with the given topology name.
|
||||
The topology must be defined beforehand.
|
||||
```
|
||||
TOPO=line4 make desvirt-start
|
||||
```
|
||||
|
||||
You will get an output like this:
|
||||
```
|
||||
cd /home/pschmerzl/RIOT/dist/tools/desvirt/desvirt && ./vnet -s -n line4
|
||||
vnet : Loaded statefile .desvirt/lib/line4.macs.
|
||||
vif : creating line4_0 for pschmerzl
|
||||
vif : Creating tap: line4_0
|
||||
vif : creating line4_1 for pschmerzl
|
||||
vif : Creating tap: line4_1
|
||||
vif : creating line4_2 for pschmerzl
|
||||
vif : Creating tap: line4_2
|
||||
vif : creating line4_3 for pschmerzl
|
||||
vif : Creating tap: line4_3
|
||||
lossnet : line4: New link from line4_0 to line4_1, rate=100mbit, loss=0.0, delay=0.0
|
||||
lossnet : line4: New link from line4_1 to line4_0, rate=100mbit, loss=0.0, delay=0.0
|
||||
lossnet : line4: New link from line4_1 to line4_2, rate=100mbit, loss=0.0, delay=0.0
|
||||
lossnet : line4: New link from line4_2 to line4_1, rate=100mbit, loss=0.0, delay=0.0
|
||||
lossnet : line4: New link from line4_2 to line4_3, rate=100mbit, loss=0.0, delay=0.0
|
||||
lossnet : line4: New link from line4_3 to line4_2, rate=100mbit, loss=0.0, delay=0.0
|
||||
vnet : Network Name: line4
|
||||
vm : Defining RIOT native process line4_1
|
||||
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_1',end-close,stderr,pty TCP-L:4711,reuseaddr,fork
|
||||
riotnative : PID: 18235
|
||||
vm : Defining RIOT native process line4_0
|
||||
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_0',end-close,stderr,pty TCP-L:4712,reuseaddr,fork
|
||||
riotnative : PID: 18236
|
||||
vm : Defining RIOT native process line4_3
|
||||
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_3',end-close,stderr,pty TCP-L:4713,reuseaddr,fork
|
||||
riotnative : PID: 18237
|
||||
vm : Defining RIOT native process line4_2
|
||||
riotnative : Start the RIOT: socat EXEC:'/home/pschmerzl/RIOT/examples/gnrc_networking/bin/native/gnrc_networking.elf line4_2',end-close,stderr,pty TCP-L:4714,reuseaddr,fork
|
||||
riotnative : PID: 18238
|
||||
|
||||
```
|
||||
|
||||
Once the topology is running, you can use `pyterm` to connect to the various
|
||||
instances, e.g. calling `pyterm -ts 4712` to connect to node `line4_0` from the
|
||||
example above.
|
||||
|
||||
#### desvirt-stop
|
||||
|
||||
This target stops a new virtualization with the given topology name.
|
||||
The topology must be defined beforehand.
|
||||
```
|
||||
TOPO=line4 make desvirt-stop
|
||||
```
|
||||
|
||||
#### desvirt-clean
|
||||
|
||||
This target resets the desvirt git-folder. All topologies will be deleted.
|
||||
```
|
||||
make desvirt-clean
|
||||
```
|
||||
|
||||
#### desvirt-distclean
|
||||
|
||||
This target deletes the desvirt folder.
|
||||
```
|
||||
make desvirt-distclean
|
||||
```
|
||||
@@ -0,0 +1,14 @@
|
||||
genconfigheader.sh
|
||||
------------------
|
||||
|
||||
Usage: `genconfigheader.sh <output_header_file> [CFLAGS]`
|
||||
|
||||
Generate a build configuration header from CFLAGS arguments
|
||||
|
||||
- Arguments on the form `-Dmacro_name=macro_value` will be converted to
|
||||
the form `#define macro_name macro_value`
|
||||
- Arguments given on the form `-Dmacro_name` will be converted to the form `#define macro_name 1`
|
||||
- The output file will be overwritten if it already exists _and_ the new output file's contents differs from the old file.
|
||||
|
||||
By not replacing the output file on every run, make can still use the file
|
||||
modification times for dependency calculations.
|
||||
+87
@@ -0,0 +1,87 @@
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright (C) 2016 Eistec AB
|
||||
#
|
||||
# This file is subject to the terms and conditions of the GNU Lesser General
|
||||
# Public License v2.1. See the file LICENSE in the top level directory for more
|
||||
# details.
|
||||
#
|
||||
|
||||
DEBUG=0
|
||||
if [ "${QUIET}" != "1" ]; then
|
||||
DEBUG=1
|
||||
fi
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
echo "Usage: $0 <output.h> [CFLAGS]..."
|
||||
echo "Extract all macros from CFLAGS and generate a header file"
|
||||
exit 1
|
||||
fi
|
||||
OUTPUTFILE="$1"
|
||||
shift
|
||||
|
||||
MD5SUM=md5sum
|
||||
if [ "$(uname -s)" = "Darwin" -o "$(uname -s)" = "FreeBSD" ]; then
|
||||
MD5SUM="md5 -r"
|
||||
fi
|
||||
|
||||
# atomically update the file
|
||||
TMPFILE=
|
||||
trap '[ -n "${TMPFILE}" ] && rm -f "${TMPFILE}"' EXIT
|
||||
# Create temporary output file
|
||||
TMPFILE=$(mktemp ${OUTPUTFILE}.XXXXXX)
|
||||
|
||||
if [ -z "${TMPFILE}" ]; then
|
||||
echo "Error creating temporary file, aborting"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# exit on any errors below this line
|
||||
set -e
|
||||
|
||||
echo "/* DO NOT edit this file, your changes will be overwritten and won't take any effect! */" > "${TMPFILE}"
|
||||
echo "/* Generated from CFLAGS: $@ */" >> "${TMPFILE}"
|
||||
|
||||
[ -n "${LTOFLAGS}" ] && echo "/* LTOFLAGS=${LTOFLAGS} */" >> "${TMPFILE}"
|
||||
|
||||
for arg in "$@"; do
|
||||
case ${arg} in
|
||||
-D*)
|
||||
# Strip leading -D
|
||||
d=${arg#-D}
|
||||
if [ -z "${d##*=*}" ]; then
|
||||
# key=value pairs
|
||||
key=${d%%=*}
|
||||
value=${d#*=}
|
||||
echo "#define $key $value" >> "${TMPFILE}"
|
||||
else
|
||||
# simple #define
|
||||
echo "#define $d 1" >> "${TMPFILE}"
|
||||
fi
|
||||
;;
|
||||
-U*)
|
||||
# Strip leading -U
|
||||
d=${arg#-U}
|
||||
echo "#undef $d" >> "${TMPFILE}"
|
||||
;;
|
||||
*)
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Only replace old file if the new file differs. This allows make to check the
|
||||
# date of the config header for dependency calculations.
|
||||
NEWMD5=$(${MD5SUM} ${TMPFILE} | cut -c -32)
|
||||
OLDMD5=$(${MD5SUM} ${OUTPUTFILE} 2>/dev/null | cut -c -32)
|
||||
if [ "${NEWMD5}" != "${OLDMD5}" ]; then
|
||||
if [ "${DEBUG}" -eq 1 ]; then echo "Replacing ${OUTPUTFILE} (${NEWMD5} != ${OLDMD5})"; fi
|
||||
# Set mode according to umask
|
||||
chmod +rw "${TMPFILE}"
|
||||
mv -f "${TMPFILE}" "${OUTPUTFILE}"
|
||||
else
|
||||
if [ "${DEBUG}" -eq 1 ]; then echo "Keeping old ${OUTPUTFILE}"; fi
|
||||
fi
|
||||
|
||||
# $TMPFILE will be deleted by the EXIT trap above if it still exists when we exit
|
||||
Reference in New Issue
Block a user