Initial import of NFC GNSS SDK project

This commit is contained in:
chenjintao
2026-09-15 16:10:12 +08:00
commit 2746cc3d4e
3070 changed files with 892062 additions and 0 deletions
@@ -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.
@@ -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