Compare commits

...

39 Commits

Author SHA1 Message Date
Matteo Cypriani 03b4105f13 [ARDrone] Update Makefiles
Fix the existing Makefiles for the drone cross-compilation.
Add libowlps-resultreader/Makefile_drone.
2012-01-31 15:11:54 +01:00
Matteo Cypriani eb403319b0 [ARDrone] Use libowlps-resultreader 2011-12-01 17:53:37 +01:00
Matteo Cypriani db5d2cd686 [ARDrone] Makefile*: allow to enable -g easily 2011-12-01 17:34:42 +01:00
Matteo Cypriani 7b7766ab5b Merge branch dev (v1.1.8) into dev-drone
Use new constants', types' and functions' names.

Conflicts:
	owlps-client/owlps-client.c
2011-12-01 17:34:13 +01:00
Matteo Cypriani b62987efb0 Merge branch 'dev' into dev-drone
Update string2data() to the new CSV format (and clean it a bit).
2011-08-18 13:26:40 +02:00
Matteo Cypriani 7ce171b2ef [ARDrone] Use ++var instead of var++ if possible 2011-08-18 11:51:00 +02:00
Matteo Cypriani b2b24ed551 Add emacs mode command to each Makefile_drone 2011-08-18 11:01:13 +02:00
Matteo Cypriani 5284120632 [ARDrone] A bit of beautifying/cleaning
Long lines, trailing white spaces, unused variables, etc.
I left most of the commented code, but it certainly should be deleted
someday.
2011-08-18 10:51:50 +02:00
Matteo Cypriani c079ee14ca [ARDrone] Fix parsing of option -l 2011-08-18 10:43:38 +02:00
Matteo Cypriani fe8846cca9 [ARDrone] Reorganise .h, clean includes 2011-08-18 10:00:45 +02:00
Matteo Cypriani 2c91f5b976 [ARDrone] Fix static compilation, synchro Makefiles 2011-08-18 09:57:07 +02:00
Matteo Cypriani dc3ba41222 [ARDrone] Create oc.h
Create oc.h from oc.c, include it in owlps-drone.h instead of directly
oc.c.
Compile oc.o separately.
2011-08-18 09:54:50 +02:00
Matteo Cypriani e823014708 Merge branch dev (v1.1.7) into dev-drone 2011-08-03 09:51:29 +02:00
Florian Taillard e57e4cfc8d Merge branch dev (v1.1.6) into dev-drone
Update Makefiles.
Use -D DEBUG instead of #defines.
Improve getopt code for the -l option.
2011-08-03 09:47:10 +02:00
Florian Taillard 5126894634 [ARDrone] Add support for multi-point of consigne 2011-06-21 11:59:18 +02:00
Florian Taillard 82e65d375d [ARDrone] Add support firmware 1.6.6
The binary is available in owlps-data (dwc_otg.ko and libioctl.so)
2011-06-21 11:59:18 +02:00
Florian Taillard f14ae6e351 [ARDrone] Add modified script drone in branch 2011-06-21 11:59:18 +02:00
Florian Taillard 4ac4216ce0 [ARDrone] Fix bug command
Change measure angle to measure cap. Add flag 1 on command AT*PCMD.
2011-06-21 11:59:18 +02:00
Florian Taillard d6598c52a1 [OC] Add cap in struct point 2011-06-21 11:59:18 +02:00
Florian Taillard ad284d0b56 [ARDrone] Change format list consigne
Change destination array to linked list.
Fix thread priority witch semaphore.
2011-06-21 11:59:18 +02:00
Florian Taillard 3ba38df483 [ARDrone] Add fly log file
Save date, time, latitude, longitude, speed_pitch and angle in file
vol.log for debugging.
2011-06-21 11:59:18 +02:00
Florian Taillard 10e38bfc0b [OC] Add time and date in struct 2011-06-21 11:59:18 +02:00
Florian Taillard 2bbe114c4b Merge branch dev (v1.1.5) into dev-drone
Read the error from the positioning server.
2011-06-21 11:58:19 +02:00
Florian Taillard c3da81bb77 [ARDrone] Add control for speed of pitch
The pitch speed is compute witch total distance and real-time distance.
2011-06-21 11:30:38 +02:00
Florian Taillard 9380678782 [ARDrone] Fix rotation direction
Fix sign of angle value.
Add landing by interrupt SIGINT.
Add check_destination() for control arrival.
2011-06-21 11:30:38 +02:00
Florian Taillard 6023295880 [ARDrone] Add algorythm for moving
Add calcul for drone command, and command function.
Fix compilation warning.
2011-06-21 11:30:38 +02:00
François Spies e093dcd7e3 [OC] Add library OpenCoordinate
Conversion latitude/longitude GPS to relative x and y.
2011-06-21 11:29:16 +02:00
Florian Taillard c18209545c [ARDrone] Fix compilation warning
Add pthread_exit(NULL_value).
Delete variable inused and labview socket.
2011-05-06 10:51:22 +02:00
Florian Taillard 46292cfe8c [ARDrone] Fix GPS orientation
Add condition South and East for négative latitude/longitude.
2011-05-06 10:46:44 +02:00
Florian Taillard 3b2823fef9 [ARDrone] Add TCP Socket for owlps-sig
Communication witch Google Maps API, for Real-Time tracking.
Port set to 8080.
SIG -> Geo Information System.
2011-05-06 10:39:49 +02:00
Florian Taillard 80a6439205 [Client] Fix compilation for ARDrone
Change include of libowlps-client.
Fix version number.
2011-05-06 10:33:47 +02:00
Florian Taillard 92e08673ca [Client] Add Makefile for ARDrone 2011-05-06 10:33:37 +02:00
Florian Taillard e45c199130 Merge branch 'dev' into dev-drone
- Fix send calibration message.
- Update makefile to add version.
2011-05-05 16:23:06 +02:00
Florian Taillard 9f77c6c91b [ARDrone] Update owlps-drone to multi-algo
Create a array for receive multi-algo.
Move all prototypes to .h.
Add error message and ignore corrupted trame.
Rename variables i->count_algo , y->count_print.
2011-04-06 15:30:19 +02:00
Florian Taillard 9eb3e02b2c [ARDrone] Update owlps-drone to new format
Receive and processing a new format of message string.
Add owlps-drone.h for prototype.
2011-04-06 12:09:06 +02:00
Florian Taillard b33aadd8ad [lib] Makefile_drone: fix install target
Add the ARM toolchain include directory into the Makefile.
2011-04-06 12:09:06 +02:00
Florian Taillard 207e815192 [ARDrone] Fix compilation
Use /usr/include/libiw.h and wireless.h to cross-compile for ARM.
Update variable names from libowlps and owlps.h (prefix owl_).
Move #includes from .h to .c.
Update path of library in Makefile.
2011-04-06 12:08:11 +02:00
Florian Taillard 290fcfa49b Add Makefiles for AR.Drone 2011-04-05 12:09:30 +02:00
Florian Taillard 12b52d9365 Add owlps-ardrone
Owlps-ardrone is a client owlps modified for embedded system Ar.drone.
The program send a request of positioning to the network and receive
estimate position. In the future, the program control a direction of
the Ar.Drone to target.
2011-04-05 12:09:30 +02:00
21 changed files with 2754 additions and 0 deletions

View File

@ -0,0 +1,80 @@
# Emplacement de la suite de cross-compilation
TOOLCHAIN_PREFIX = /arm
TOOLCHAIN_BIN = $(TOOLCHAIN_PREFIX)/bin
TOOLCHAIN_USR = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc/usr
TOOLCHAIN_USR_2 = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc
# Compilateur
CC = $(TOOLCHAIN_BIN)/arm-none-linux-gnueabi-gcc
# Autres outils
AR = ar
RANLIB = ranlib
RM = rm -f
# Variables générales
LIB_CIBLE=libowlps-client
VERSION=1.0
# Cibles à construire
STATIC=$(LIB_CIBLE).a
HEADER=owlps-client.h
# Composition de la bibliothèque
OBJS=$(LIB_CIBLE).o
# Flags
LIBOWLPS_DIR = ../libowlps
CFLAGS=-O2 -Wall -Wextra -Wstrict-prototypes -O -I$(LIBOWLPS_DIR) -I.
DEPFLAGS=-MMD
XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG=-fPIC
LIBS=-liw
#STRIPFLAGS= -Wl,-s
#LDFLAGS=
LATHEROS=-L$(TOOLCHAIN_USR_2)/lib/
IATHEROS=-I$(TOOLCHAIN_USR)/include/
## Cibles de compilation standard ##
.PHONY : all static clean purge help
all : static
static : $(STATIC)
%.o : %.c $(HEADER)
$(CC) $(XCFLAGS) $(IATHEROS) -c $<
# Compilation de la bibliothèque statique
$(STATIC) : $(OBJS)
$(RM) $@
$(AR) cru $@ $^
$(RANLIB) $@
## Nettoyage ##
clean :
@$(RM) *~ *.o *.d
purge : clean
@$(RM) $(STATIC)
## Aide ##
help :
@echo "Bibliothèques nécessaires à la compilation :\n\
libowlps-dev\n\
\n\
Cibles possibles :\n\
static (cible par défaut) : Compile la bibliothèque statique (.a).\n\
\n\
clean : Supprime les fichiers temporaires.\n\
purge : Supprime le résultat de la compilation.\n\"
# Local Variables: *
# mode: makefile-gmake *
# End: *

View File

@ -0,0 +1,82 @@
# Emplacement de la suite de cross-compilation
TOOLCHAIN_PREFIX = /arm
TOOLCHAIN_BIN = $(TOOLCHAIN_PREFIX)/bin
TOOLCHAIN_USR = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc/usr
TOOLCHAIN_USR_2 = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc
# Compilateur
CC = $(TOOLCHAIN_BIN)/arm-none-linux-gnueabi-gcc
# Autres outils
AR = ar
RANLIB = ranlib
RM = rm -f
# Variables générales
LIB_CIBLE = libowlps-resultreader
VERSION = 1.0
# Cibles à construire
STATIC = $(LIB_CIBLE).a
HEADER = owlps-resultreader.h
EXAMPLE = owlps-resultreader-udp
# Composition de la bibliothèque
OBJS = $(LIB_CIBLE).o
# Flags
LIBOWLPS_DIR = ../libowlps
CFLAGS = -O2 -Wall -Wextra -Wstrict-prototypes -O -I$(LIBOWLPS_DIR) -I.
#CFLAGS += -g -O0
CFLAGS += -D DEBUG
DEPFLAGS = -MMD
XCFLAGS = $(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG = -fPIC
#STRIPFLAGS = -Wl,-s
#LDFLAGS =
LATHEROS = -L$(TOOLCHAIN_USR_2)/lib/
IATHEROS = -I$(TOOLCHAIN_USR)/include/
## Cibles de compilation standard ##
.PHONY : all static clean purge help
all : static example
static : $(STATIC)
example : $(EXAMPLE)
# Cancel implicit make rule
%: %.c
%.o : %.c $(HEADER)
$(CC) $(XCFLAGS) $(IATHEROS) -c $<
% : %.o $(HEADER) $(STATIC)
$(CC) $(STRIPFLAGS) $(XCFLAGS) $(IATHEROS) -o $@ $< \
$(STATIC) -L$(LIBOWLPS_DIR) -lowlps -lrt
# Compilation de la bibliothèque statique
$(STATIC) : $(OBJS)
$(RM) $@
$(AR) cru $@ $^
$(RANLIB) $@
## Nettoyage ##
clean :
@$(RM) *~ *.o *.d
purge : clean
@$(RM) $(STATIC) $(EXAMPLE)
## Aide ##
help :
@make help
# Local Variables: *
# mode: makefile-gmake *
# End: *

148
libowlps/Makefile_drone Normal file
View File

@ -0,0 +1,148 @@
TOOLCHAIN_PREFIX = /arm
TOOLCHAIN_BIN = $(TOOLCHAIN_PREFIX)/bin
TOOLCHAIN_USR = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc/usr
TOOLCHAIN_USR_2 = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc
# Répertoire d'installation
PREFIX_CC=/arm/arm-none-linux-gnueabi
PREFIX=/usr/local
INSTALL_LIB= $(PREFIX)/lib
INSTALL_INC= $(PREFIX_CC)/include
INSTALL_MAN= $(PREFIX)/share/man
# Compilateur
CC = $(TOOLCHAIN_BIN)/arm-none-linux-gnueabi-gcc
# Autres outils
AR = ar
RANLIB = ranlib
# Commandes d'installation et de désinstallation
RM = rm -f
CP = cp
SYMLINK = ln -sf
# Variables générales
LIB_CIBLE=libowlps
VERSION=1.0
# Cibles à construire
STATIC=$(LIB_CIBLE).a
DYNAMIC=$(LIB_CIBLE).so.$(VERSION)
#PROGS=
HEADER=owlps.h
#HEADERS=
# Composition de la bibliothèque
OBJS=$(LIB_CIBLE).o
# Flags
CFLAGS = -O2 -Wall -Wextra -Wstrict-prototypes -O -I.
DEPFLAGS=-MMD
XCFLAGS=$(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG=-fPIC
LIBS = -liw -lrt
#STRIPFLAGS= -Wl,-s
#LDFLAGS=
LATHEROS=-L$(TOOLCHAIN_USR_2)/lib/
IATHEROS=-I$(TOOLCHAIN_USR)/include/
## Cibles de compilation standard ##
.PHONY : all dynamic static install install-dynamic install-static install-header uninstall uninstall-dynamic uninstall-static uninstall-header clean purge help
all : dynamic static
dynamic : $(DYNAMIC)
static : $(STATIC)
%.o: %.c $(HEADER)
$(CC) $(XCFLAGS) $(IATHEROS) $(PICFLAG) -c -o $@ $<
# Compilation de la bibliothèque dynamique
$(DYNAMIC): $(OBJS)
$(CC) -shared -o $@ -Wl,-soname,$@ $(STRIPFLAGS) $(LIBS) $(IATHEROS) $(LATHEROS) -lc $^
$(SYMLINK) $@ $(LIB_CIBLE).so
chmod a-x $@
# Compilation de la bibliothèque statique
$(STATIC): $(OBJS)
$(RM) $@
$(AR) cru $@ $^
$(RANLIB) $@
## Installation ##
install : install-static install-dynamic
install-dynamic : install-header $(DYNAMIC)
@$(CP) $(DYNAMIC) $(INSTALL_LIB) &&\
chmod 644 $(INSTALL_LIB)/$(DYNAMIC) &&\
chown root:root $(INSTALL_LIB)/$(DYNAMIC) &&\
cd $(INSTALL_LIB) && $(SYMLINK) $(DYNAMIC) $(LIB_CIBLE).so &&\
echo "Reconstruction du cache pour ld.so : ldconfig $(INSTALL_LIB)" ; ldconfig $(INSTALL_LIB)
install-static : install-header $(STATIC)
@$(CP) $(STATIC) $(INSTALL_LIB) &&\
chmod 644 $(INSTALL_LIB)/$(STATIC) &&\
chown root:root $(INSTALL_LIB)/$(STATIC)
install-header : $(HEADER)
@$(CP) $(HEADER) $(INSTALL_INC) &&\
chmod 644 $(INSTALL_INC)/$(HEADER) &&\
chown root:root $(INSTALL_INC)/$(HEADER)
## Désinstallation ##
uninstall : uninstall-dynamic uninstall-static
uninstall-dynamic : uninstall-header
@$(RM) $(INSTALL_LIB)/$(DYNAMIC) $(INSTALL_LIB)/$(LIB_CIBLE).so
@echo "Reconstruction du cache pour ld.so : ldconfig" ; ldconfig
uninstall-static : uninstall-header
@$(RM) $(INSTALL_LIB)/$(STATIC)
uninstall-header :
@$(RM) $(INSTALL_INC)/$(HEADER)
## Nettoyage ##
clean :
@$(RM) *~ *.o *.d
purge : clean
@$(RM) $(DYNAMIC) *.so $(STATIC) $(PROGS)
## Aide ##
help :
@echo "Bibliothèques nécessaires à la compilation :\n\
libiw-dev\n\
\n\
Cibles possibles :\n\
all (cible par défaut) : Compile la bibliothèque et le programme d'exemple (tx).\n\
dynamic : Compile la bibilothèque partagée (.so).\n\
static : Compile la bibliothèque statique (.a).\n\
\n\
install : Installe la bibliothèque partagée et statique.\n\
install-dynamic : N'installe que la bibliothèque partagée.\n\
install-static : N'installe que la bibliothèque statique.\n\
\n\
uninstall : Désinstalle tout ce qu'il est possible de désinstaller.\n\
uninstall-dynamic : Désinstalle la bibliothèque partagée.\n\
uninstall-static : Désinstalle la bibliothèque statique.\n\
\n\
clean : Supprime les fichiers temporaires.\n\
purge : Supprime le résultat de la compilation.\n\
\n\
Note : l'installation se fait dans l'arborescence $(PREFIX). Modifiez la variable PREFIX du Makefile pour changer ce comportement."
# Local Variables: *
# mode: makefile-gmake *
# End: *

111
owlps-ardrone/Makefile Normal file
View File

@ -0,0 +1,111 @@
# Source version
ifndef OWLPS_VERSION
OWLPS_VERSION := $(shell git describe 2>/dev/null || echo 'UNKNOWN_VERSION')
endif
# Répertoire d'installation
PREFIX=/usr/local
INSTALL_DIR= $(PREFIX)/bin
INSTALL_LIB= $(PREFIX)/lib
INSTALL_INC= $(PREFIX)/include
INSTALL_MAN= $(PREFIX)/share/man
# Compilateur
COLORGCC := $(shell which colorgcc >/dev/null 2>&1 ; echo $$?)
ifeq ($(COLORGCC), 0)
CC = colorgcc
endif
# Commandes d'installation et de désinstallation
RM = rm -f
CP = cp
# Cible
TARGET=owlps-drone
DEPS = oc.o
# Flags
LIBOWLPS_DIR = ../libowlps
LIBOWLPSCLIENT_DIR = ../libowlps-client
LIBOWLPSRESULTREADER_DIR = ../libowlps-resultreader
CFLAGS = -O2 -Wall -Wextra -Wstrict-prototypes \
-I$(LIBOWLPS_DIR) -I$(LIBOWLPSCLIENT_DIR) \
-I$(LIBOWLPSRESULTREADER_DIR)
#CFLAGS += -g -O0
DEPFLAGS = -MMD
XCFLAGS = $(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG = -fPIC
OWLPSFLAGS = -D OWLPS_VERSION=\"$(OWLPS_VERSION)\"
OWLPSFLAGS += -D DEBUG
LIBS = -L$(LIBOWLPS_DIR) -lowlps \
-L$(LIBOWLPSCLIENT_DIR) -lowlps-client \
-L$(LIBOWLPSRESULTREADER_DIR) -lowlps-resultreader \
-lm -pthread
OS := $(shell uname)
ifeq ("$(OS)", "Linux")
LIBS += -lrt
endif
STATIC_LIBS =
## Cibles de compilation standard ##
.PHONY : all dynamic static install uninstall clean purge help
dynamic : $(TARGET)
static : $(TARGET).static
all : dynamic static
%.o : %.c %.h
$(CC) $(XCFLAGS) $(OWLPSFLAGS) -c $<
# Compilation du programme
$(TARGET) : $(TARGET).o $(DEPS)
$(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS)
$(TARGET).static : $(TARGET).o $(DEPS)
$(CC) $(LDFLAGS) -static $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) $(STATIC_LIBS)
## Installation / désinstallation ##
install : $(TARGET)
@$(CP) $(TARGET) $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET) ; chmod 755 $(TARGET)
install-static : $(TARGET).static
@$(CP) $(TARGET).static $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET).static ; chmod 755 $(TARGET).static
uninstall :
@$(RM) $(INSTALL_DIR)/{$(TARGET),$(TARGET).static}
## Nettoyage ##
clean :
@$(RM) -fv *~ *.o *.d
purge : clean
@$(RM) -fv $(TARGET) $(TARGET).static
## Aide ##
help :
@echo -e "Bibliothèques nécessaires à la compilation :\n\
libowlps1.0 (fournie)\n\
\n\
Cibles possibles :\n\
$(TARGET) (cible par défaut) : Compile le programme $(TARGET).\n\
$(TARGET).static : Compile le programme $(TARGET).static \
(version sans lien dynamique).\n\
install : Installe le programme $(TARGET).\n\
uninstall : Désinstalle le programme $(TARGET).\n\
clean : Supprime les fichiers temporaires.\n\
purge : Supprime le résultat de la compilation.\n\
\n\
Note : l'installation se fait dans l'arborescence $(PREFIX). \
Modifiez la variable PREFIX du Makefile pour changer ce comportement."

View File

@ -0,0 +1,125 @@
# Source version
ifndef OWLPS_VERSION
OWLPS_VERSION := $(shell git describe 2>/dev/null || echo 'UNKNOWN_VERSION')
endif
# Emplacement de la suite de cross-compilation
TOOLCHAIN_PREFIX = /arm
TOOLCHAIN_BIN = $(TOOLCHAIN_PREFIX)/bin
TOOLCHAIN_USR = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi
TOOLCHAIN_USR_2 = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc
# Compilateur
CC = $(TOOLCHAIN_BIN)/arm-none-linux-gnueabi-gcc
# Répertoire d'installation
PREFIX=/usr/local
INSTALL_DIR= $(PREFIX)/bin
INSTALL_LIB= $(PREFIX)/lib
INSTALL_INC= $(PREFIX)/include
INSTALL_MAN= $(PREFIX)/share/man
# Commandes d'installation et de désinstallation
RM = rm -f
CP = cp
# Cible
TARGET=owlps-drone
DEPS = oc.o
# Flags
LIBOWLPS_DIR = ../libowlps
LIBOWLPSCLIENT_DIR = ../libowlps-client
LIBOWLPSRESULTREADER_DIR = ../libowlps-resultreader
CFLAGS = -O2 -Wall -Wextra -Wstrict-prototypes \
-I$(LIBOWLPS_DIR) -I$(LIBOWLPSCLIENT_DIR) \
-I$(LIBOWLPSRESULTREADER_DIR)
#CFLAGS += -g -O0
DEPFLAGS = -MMD
XCFLAGS = $(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG = -fPIC
OWLPSFLAGS = -D OWLPS_VERSION=\"$(OWLPS_VERSION)\"
OWLPSFLAGS += -D DEBUG
LOWLPS = -L$(LIBOWLPS_DIR) -lowlps
LOWLPSA = $(LIBOWLPS_DIR)/libowlps.a
LOWLPSCLIENTA = $(LIBOWLPSCLIENT_DIR)/libowlps-client.a
LOWLPSRESULTREADERA = $(LIBOWLPSRESULTREADER_DIR)/libowlps-resultreader.a
LIBS = $(LOWLPSCLIENTA) $(LOWLPSRESULTREADERA) -lrt -lm -pthread
DYNAMIC_LIBS = $(LOWLPS) $(LIBS)
SEMISTATIC_LIBS = $(LOWLPSA) $(LIBS)
STATIC_LIBS = $(LOWLPSA) $(LIBS)
LATHEROS = -L$(TOOLCHAIN_USR)/lib -L$(TOOLCHAIN_USR_2)/lib
IATHEROS = -I$(TOOLCHAIN_USR)/include -I$(TOOLCHAIN_USR_2)/include
LDFLAGS = $(IATHEROS) $(LATHEROS)
## Cibles de compilation standard ##
.PHONY: all semistatic static install uninstall clean purge help
#dynamic: $(TARGET)
semistatic: $(TARGET).semistatic
static: $(TARGET).static
all: semistatic static
# Cancel implicit make rule
%: %.c
%.o: %.c %.h
$(CC) $(XCFLAGS) $(IATHEROS) $(OWLPSFLAGS) -c $<
# Compilation du programme
$(TARGET) : $(TARGET).o $(DEPS)
$(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS)
$(TARGET).semistatic : $(TARGET).o $(DEPS)
$(CC) $(LDFLAGS) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) $(STATIC_LIBS)
$(TARGET).static : $(TARGET).o $(DEPS)
$(CC) $(LDFLAGS) -static $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LIBS) $(STATIC_LIBS)
## Installation / désinstallation ##
install : $(TARGET)
@$(CP) $(TARGET) $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET) ; chmod 755 $(TARGET)
install-static : $(TARGET).static
@$(CP) $(TARGET).static $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET).static ; chmod 755 $(TARGET).static
uninstall :
@$(RM) $(INSTALL_DIR)/{$(TARGET),$(TARGET).static}
## Nettoyage ##
clean :
@$(RM) -fv *~ *.o *.d
purge : clean
@$(RM) -fv $(TARGET) $(TARGET).static
## Aide ##
help :
@echo -e "Bibliothèques nécessaires à la compilation :\n\
libowlps1.0 (fournie)\n\
\n\
Cibles possibles :\n\
$(TARGET) (cible par défaut) : Compile le programme $(TARGET).\n\
$(TARGET).static : Compile le programme $(TARGET).static \
(version sans lien dynamique).\n\
install : Installe le programme $(TARGET).\n\
uninstall : Désinstalle le programme $(TARGET).\n\
clean : Supprime les fichiers temporaires.\n\
purge : Supprime le résultat de la compilation.\n\
\n\
Note : l'installation se fait dans l'arborescence $(PREFIX). \
Modifiez la variable PREFIX du Makefile pour changer ce comportement."
# Local Variables: *
# mode: makefile-gmake *
# End: *

79
owlps-ardrone/oc.c Normal file
View File

@ -0,0 +1,79 @@
// Bibliotheque OpenCoordinate : fonctions coordonnees geographiques
#include "oc.h"
#include <stdio.h>
#include <math.h>
double oc_distance_between(struct point a, struct point b) {
// retourne la distance entre les 2 points en metres
double R = 6378137; // metres
double d_lat = (b.lat-a.lat)/180*M_PI;
double d_lon = (b.lon-a.lon)/180*M_PI;
double alpha = sin(d_lat/2) * sin(d_lat/2) +
cos(a.lat/180*M_PI) * cos(b.lat/180*M_PI) *
sin(d_lon/2) * sin(d_lon/2);
double c = 2 * atan2(sqrt(alpha), sqrt(1-alpha));
return R * c;
}
struct point_relatif oc_convert(struct point o, struct point a) {
//convert transforme des coordonnes WGS84 en metres par rapport au referentiel r
struct point proj_x, proj_y;
struct point_relatif pr;
proj_x.lat=a.lat;
proj_x.lon=o.lon;
proj_y.lat=o.lat;
proj_y.lon=a.lon;
pr.x=oc_distance_between(proj_y,o);
pr.y=oc_distance_between(proj_x,o);
pr.z=0;
if (proj_y.lon > o.lon) pr.x=-pr.x;
if (proj_x.lat > o.lat) pr.y=-pr.y;
return pr;
}
/*
function unconvert(x,y) {
if (origine==null) return null;
else {
var R = 6378137; // metres
var lat1 = origine.lat()/180*Math.PI;
var lon1 = origine.lng()/180*Math.PI;
var d = Math.sqrt(x*x + y*y);
var brng = Math.acos( y / d);
var lat2 = Math.asin( Math.sin(lat1)*Math.cos(d/R) +
Math.cos(lat1)*Math.sin(d/R)*Math.cos(brng) );
var lon2 = lon1 +
Math.atan2(Math.sin(brng)*Math.sin(d/R)*Math.cos(lat1),
Math.cos(d/R)-Math.sin(lat1)*Math.sin(lat2));
return new google.maps.LatLng(lat2*180/Math.PI, lon2*180/Math.PI);
}
}
*/
double oc_cap(struct point o, struct point a) {
struct point_relatif pr=oc_convert(a, o);
double alpha;
printf("cap x=%f et y=%f\n",pr.x, pr.y);
if (pr.x==0)
if (pr.y>=0) return 360.0;
else return 180.0;
else {
alpha=atan(pr.y/pr.x) * 180 / M_PI;
printf("%f\n",alpha);
if (pr.x>0)
return ((450 - alpha)/360 - round((450 - alpha)/360))*360;
else {
//alpha=atan(-pr.y/pr.x) * 180 / PI;
//printf("%f\n",alpha);
return 270-alpha;
}
}
}

30
owlps-ardrone/oc.h Normal file
View File

@ -0,0 +1,30 @@
#ifndef _LIBOPENCOORDINATES_
#define _LIBOPENCOORDINATES_
/* Define M_PI if it is not defined */
#ifndef M_PI
# define M_PI 3.14159265358979323846
#endif
struct point
{
int date;
float time;
double lat, lon, alt, cap;
} point;
struct point_relatif
{
double x, y, z;
} point_relatif;
double oc_distance_between(struct point a, struct point b) ;
struct point_relatif oc_convert(struct point o, struct point a) ;
double oc_cap(struct point o, struct point a) ;
#endif // _LIBOPENCOORDINATES_

1192
owlps-ardrone/owlps-drone.c Normal file

File diff suppressed because it is too large Load Diff

120
owlps-ardrone/owlps-drone.h Normal file
View File

@ -0,0 +1,120 @@
#ifndef _OWLPS_ARDRONE_H_
#define _OWLPS_ARDRONE_H_
#include "oc.h"
/* Program arguments (getopt string) */
#define OPTIONS "d:hi:l::n:p:t:V"
/* Number of packets to send */
#define DEFAULT_NBPKT_CALIB 20 // 20 packets when calibrating
#define DEFAULT_NBPKT_NORMAL 10 // 10 packets when requesting the position
/* Delay between two packet transmissions (in microseconds) */
#define DEFAULT_DELAY_CALIB 50000 // Calibration request
#define DEFAULT_DELAY_NORMAL 25000 // Localisation request
/* Maximum length of the algorithm & area names */
#define ALGO_STRLEN 15
#define AREA_STRLEN 50
/* GPS inputs */
#define SEPARATOR ','
#define EOL '$'
#define TYPE "GPS"
/* Drone commands */
#define LENSTR 1000
#define ATREF "AT*REF="
#define LANDING ",290717696"
#define TAKEOFF ",290718208"
/* Socket parameters */
#define IP "192.168.1.1"
#define PORT 5556
/* Error codes */
#define ERR_BAD_USAGE 1 // Bad program call (bad number of arguments)
typedef struct _gps
{
float time;
char state;
double latitude;
char orilat;
double longitude;
char orilon;
float speed;
float cap;
int date;
float decmag;
} gps ;
typedef struct _consigne
{
double lat;
double lon;
double alt;
struct _consigne *next;
} consigne ;
typedef struct _point_consigne
{
double lat;
double lon;
double alt;
} point_consigne ;
/* Function headers */
void parse_command_line(int argc, char **argv) ;
void parse_main_options(int argc, char **argv) ;
void check_destination_ip(void) ;
void parse_calibration_data(int argc, char **argv) ;
void check_configuration(void) ;
#ifdef DEBUG
void print_configuration(void) ;
#endif // DEBUG
void print_usage(void) ;
void print_version(void) ;
void drone_handler_sigint(const int) ;
void create_socket(void) ;
void make_packet(void) ;
void send_request(void) ;
void* receive_position(void*) ;
void string2data(char*) ;
void traficGPS(int);
void* thread_gps(void*) ;
void* thread_send(void*) ;
void* thread_control(void*) ;
void print_error(char*) ;
void drone_err(int);
int read_position(char*);
int drone_socket_create(void);
void* drone_socket_watchdog(void*);
int drone_socket_close(void);
int cmd_drone_take_off(void); //Add socket
int cmd_drone_landing(void); //Add socket
int cmd_drone_move(float, int);
int cmd_drone_init_direction(void); //Add socket
void calcul_trajectory(float*, float*);
float calcul_speed(float);
int check_destination(struct point, struct point);
float calcul_angle(void);
consigne* list_add_front(consigne*, double, double, double);
consigne* list_add_back(consigne*, double, double, double);
void list_print(consigne*);
#endif //_OWLPS_ARDRONE_H_

View File

@ -0,0 +1,60 @@
#!/bin/sh
# Copie du fichier wifi_setup.sh pour un mode recovery en cas de pb reseau
#cp /bin/wifi_setup.sh.orig /bin/wifi_setup.sh
export LD_PRELOAD=/data/libioctl_arm.so
UPDATE_PATH=/update/ardrone_update.plf
VERSION_PATH=/update/version.txt
ERR_PATH=/update/err.log
echo "Copy version.txt file in ftp directory"
cp /firmware/version.txt $VERSION_PATH
echo "Check if update is necessary ..."
if [ -e $UPDATE_PATH ] ; then
VERSION=`cat $VERSION_PATH`
if [ -e $ERR_PATH ] ; then
CHECK_ERR=`cat $ERR_PATH`
if [ "$CHECK_ERR" = "NEED_TO_FLASH" ] ; then
CHECK_PLF=`/bin/checkplf $UPDATE_PATH $VERSION`
if [ "$CHECK_PLF" = "NEED_TO_FLASH" ] ; then
echo "ERR=FLASH_KO" > $ERR_PATH
else
/bin/checkplf $UPDATE_PATH $VERSION > $ERR_PATH
fi
else
/bin/checkplf $UPDATE_PATH $VERSION > $ERR_PATH
fi
else
/bin/checkplf $UPDATE_PATH $VERSION > $ERR_PATH
fi
CHECK_ERR=`cat $ERR_PATH`
if [ "$CHECK_ERR" = "NEED_TO_FLASH" ] ; then
echo "File $UPDATE_PATH exists... Start updating..."
pinst_trigger
echo "Rebooting..."
reboot
else
if [ "$CHECK_ERR" = "VERSION_OK" ] ; then
echo "Version OK"
elif [ "$CHECK_ERR" = "ERR=FLASH_KO" ] ; then
echo "Error during Updating... Removing..."
else
echo "File $UPDATE_PATH not valid... Removing..."
fi
rm -Rf $UPDATE_PATH
echo "Start Drone software..."
inetd
(/bin/program.elf ; gpio 63 -d ho 1) &
fi
else
echo "File $UPDATE_PATH doesn't exists... Start Drone software..."
if [ -e $ERR_PATH ] ; then
rm -Rf $ERR_PATH
fi
inetd
(/bin/program.elf ; gpio 63 -d ho 1) &
fi

View File

@ -0,0 +1,58 @@
#!/bin/sh
#
# Script to setup drone pairing
#
# Getting Iphone's MAC address from config.ini file.
NULL_MAC=00:00:00:00:00:00
if [ $# -eq 0 ]
then
if [ -s /data/config.ini ]
then
MAC_ADDR=`grep owner_mac /data/config.ini | awk -F "=" '{print $2}'`
else
MAC_ADDR=$NULL_MAC
fi
else
MAC_ADDR=$1
fi
echo "Owner's MAC address is: $MAC_ADDR"
# [Stephane] Exits if owner MAC address is already being filtered
# (changing iptables rules too often may crash the drone for a undetermined reason)
CURRENTLY_ALLOWED_MAC_ADDR=`iptables -L | grep MAC | awk -F " " '{print $7}'`
if [ "$CURRENTLY_ALLOWED_MAC_ADDR" = "$MAC_ADDR" ]
then
echo "Drone is already paired with $MAC_ADDR"
exit
fi
if [ $MAC_ADDR != $NULL_MAC ]
then
echo "Setting pairing for: $MAC_ADDR"
# Clearing all rules
iptables -P INPUT ACCEPT
iptables -F
# Allowing only owner's traffic
iptables -A INPUT -m mac --mac-source $MAC_ADDR -j ACCEPT
# allowing ICMP (ping), ftp, nfs and telnet traffic for everyone.
iptables -A INPUT --protocol icmp -j ACCEPT
#iptables -A INPUT --protocol tcp --dport 23 -j ACCEPT
iptables -A INPUT --protocol tcp --dport 21 -j ACCEPT
iptables -A INPUT --protocol tcp --dport 2049 -j ACCEPT
# Blocking all incoming traffic by default
iptables -P INPUT DROP
else
echo "Clearing pairing rule"
# Switching rad LED on
gpio 63 -d ho 1
# Clearing all rules
iptables -F
# Allows incoming connections from anywhere outside
iptables -P INPUT ACCEPT
# Switching rad LED off
gpio 63 -d ho 0
fi

View File

@ -0,0 +1,110 @@
#!/bin/sh
#
# Script to see if an IP adress is already used or not
#
# Getting SSID from config.ini file.
#initializing random generator
cat /data/random_mac.txt > /dev/urandom
/bin/random_mac > /data/random_mac.txt
#echo 2 > /proc/cpu/alignment
#export WORKAREA=/
#export ATH_PLATFORM=ardrone
#/usr/sbin/recEvent /data/athdbg.log&
if [ -s /factory/mac_address.txt ]
then
MAC_ADDR=`cat /factory/mac_address.txt`
else
MAC_ADDR=`cat /data/random_mac.txt`
fi
loadAR6k.sh --setmac $MAC_ADDR
#loadtestcmd.sh
# Waiting 2s for the wifi chip to be ready
sleep 2
# Increasing scan time to help detecting wifi networks
wmiconfig -i ath0 --scan --maxact=80
# Setting retry limits to 6
wmiconfig -i ath0 --setretrylimits 2 0 6 off
# Limiting available rates to 11, 24 or 54 Mb/s
wmiconfig -i ath0 --setfixrates 3 8 11
# Disabling powersaving
wmiconfig -i ath0 --power maxperf
SSID=`grep ssid_single_player /data/config.ini | awk -F "=" '{print $2}'`
if [ $SSID ]
then
echo "SSID=$SSID"
else
#default SSID.
SSID=ardrone_wifi
echo "SSID=$SSID"
fi
export NETIF=ath0
RANDOM_CHAN=`/bin/channelselector`
echo "Creating/Joining Network $SSID"
#iwconfig ath0 mode ad-hoc
#iwconfig ath0 channel $RANDOM_CHAN
#iwconfig ath0 essid $SSID
#iwconfig ath0 channel 1
iwconfig ath0 mode ad-hoc essid owl channel auto
OK=0
BASE_ADRESS=192.168.1.
PROBE=1
while [ $OK -eq 0 ]
do
#configuring interface.
ifconfig ath0 $BASE_ADRESS$PROBE
ifconfig ath0:0 192.168.11.1
arping -I ath0 -q -f -D -w 2 $BASE_ADRESS$PROBE
if [ $? -eq 1 ]
then
#generating random odd IP address
PROBE=`/bin/random_ip`
else
OK=1
fi
done
#Configuring DHCP server.
echo "Using address $BASE_ADRESS$PROBE"
echo "start $BASE_ADRESS`expr $PROBE + 1`" > /tmp/udhcpd.conf
echo "end $BASE_ADRESS`expr $PROBE + 4`" >> /tmp/udhcpd.conf
echo "interface ath0" >> /tmp/udhcpd.conf
echo "decline_time 1" >> /tmp/udhcpd.conf
echo "conflict_time 1" >> /tmp/udhcpd.conf
echo "opt subnet 255.255.255.0" >> /tmp/udhcpd.conf
echo "opt router $BASE_ADRESS$PROBE" >> /tmp/udhcpd.conf
echo "opt lease 1200" >> /tmp/udhcpd.conf
/bin/pairing_setup.sh
# Saving random info for initialization at next reboot
date > /dev/urandom
/bin/random_mac > /data/random_mac.txt
iwconfig ath0 rate 54M
iwconfig ath0 rate auto
telnetd -l /bin/sh
udhcpd /tmp/udhcpd.conf
iptables -t nat -A POSTROUTING -p UDP --sport 8884 -j SNAT --to 192.168.1.254:5554
iptables -t nat -A PREROUTING -p UDP -d 192.168.1.254 --dport 5554 -j DNAT --to 192.168.1.1:8884
iptables -t nat -A POSTROUTING -p UDP --sport 8886 -j SNAT --to 192.168.1.254:5556
iptables -t nat -A PREROUTING -p UDP -d 192.168.1.254 --dport 5556 -j DNAT --to 192.168.1.1:8886

View File

@ -0,0 +1,26 @@
#!/bin/sh
#
# Initialization script for Arduino stuff
#
# Loads modules and launches proxy server application
# required for communication with Arduino module.
#
echo Enabling 5V
echo Enabling USB Port
gpio 127 -d ho 1
gpio 127 -d i
echo Loading dwc_otg.ko
insmod /data/dwc_otg.ko
echo Waiting 3s for the device to be ready
sleep 3
echo Setting correct baud rate of 38400 for /dev/ttyPA0
stty -F /dev/ttyPA0 raw speed 38400 -crtscts cs8 -cstopb -parenb
#echo Activate log
#cat /dev/ttyPA0 >> /data/video/gps.log.0 &

View File

@ -0,0 +1,61 @@
#!/bin/sh
# IP_ADDR - this target IP address using CIDR notation:
# <target-ip>/<target-bitmask>
#
# For example:
echo init started...
/bin/mount -t tmpfs tmp /tmp
/bin/mount -t proc proc /proc
/bin/mount -o remount,rw /
/bin/mount -t tmpfs dev /dev
/bin/mkdir -p /dev/shm /dev/pts
/bin/mount -t devpts devpts /dev/pts
/bin/mount -t sysfs sys /sys
#don't allow overcommit (allocate more memory that the physical one)
echo 2 > /proc/sys/vm/overcommit_memory
echo 90 > /proc/sys/vm/overcommit_ratio
#in case of unaligned access print a message and send a SIGBUS
echo 5 > /proc/cpu/alignment
#reboot after 1s after a panic
echo 1 > /proc/sys/kernel/panic
#panic when an oops or BUG is encountered
#disable this for developer
echo 1 > /proc/sys/kernel/panic_on_oops
echo 4 > /sys/module/p6_camif/parameters/lines_per_irq
echo -1 > /proc/sys/kernel/sched_rt_runtime_us
echo "/sbin/mdev" > /proc/sys/kernel/hotplug
/sbin/mdev -s
# Don't show kernel messages
dmesg -n1
/bin/mkdir -p /update
/bin/mount -a
/bin/mkdir -p /data/video
/bin/hostname -F /etc/hostname
/sbin/ifconfig lo 127.0.0.1 up
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
/bin/factory_reset_cb&
modprobe p6_sdhci
/bin/wifi_setup.sh
# Patch to enable button management.
ln -s /dev /dev/input
/data/gps.sh
#mount -o nolock,proto=tcp -t nfs 192.168.0.11:/mnt/video /home/default
/bin/check_update.sh
echo init exit
echo if you want to customize init look at target/generic/target_skeleton/etc files
echo if crtl+c does not work look at the Linux FAQ section.

View File

@ -0,0 +1,60 @@
#!/bin/sh
# Copie du fichier wifi_setup.sh pour un mode recovery en cas de pb reseau
#cp /bin/wifi_setup.sh.orig /bin/wifi_setup.sh
export LD_PRELOAD=/data/libioctl_arm.so
UPDATE_PATH=/update/ardrone_update.plf
VERSION_PATH=/update/version.txt
ERR_PATH=/update/err.log
echo "Copy version.txt file in ftp directory"
cp /firmware/version.txt $VERSION_PATH
echo "Check if update is necessary ..."
if [ -e $UPDATE_PATH ] ; then
VERSION=`cat $VERSION_PATH`
if [ -e $ERR_PATH ] ; then
CHECK_ERR=`cat $ERR_PATH`
if [ "$CHECK_ERR" = "NEED_TO_FLASH" ] ; then
CHECK_PLF=`/bin/checkplf $UPDATE_PATH $VERSION`
if [ "$CHECK_PLF" = "NEED_TO_FLASH" ] ; then
echo "ERR=FLASH_KO" > $ERR_PATH
else
/bin/checkplf $UPDATE_PATH $VERSION > $ERR_PATH
fi
else
/bin/checkplf $UPDATE_PATH $VERSION > $ERR_PATH
fi
else
/bin/checkplf $UPDATE_PATH $VERSION > $ERR_PATH
fi
CHECK_ERR=`cat $ERR_PATH`
if [ "$CHECK_ERR" = "NEED_TO_FLASH" ] ; then
echo "File $UPDATE_PATH exists... Start updating..."
pinst_trigger
echo "Rebooting..."
reboot
else
if [ "$CHECK_ERR" = "VERSION_OK" ] ; then
echo "Version OK"
elif [ "$CHECK_ERR" = "ERR=FLASH_KO" ] ; then
echo "Error during Updating... Removing..."
else
echo "File $UPDATE_PATH not valid... Removing..."
fi
rm -Rf $UPDATE_PATH
echo "Start Drone software..."
inetd
(/bin/program.elf ; gpio 63 -d ho 1) &
fi
else
echo "File $UPDATE_PATH doesn't exists... Start Drone software..."
if [ -e $ERR_PATH ] ; then
rm -Rf $ERR_PATH
fi
inetd
(/bin/program.elf ; gpio 63 -d ho 1) &
fi

View File

@ -0,0 +1,58 @@
#!/bin/sh
#
# Script to setup drone pairing
#
# Getting Iphone's MAC address from config.ini file.
NULL_MAC=00:00:00:00:00:00
if [ $# -eq 0 ]
then
if [ -s /data/config.ini ]
then
MAC_ADDR=`grep owner_mac /data/config.ini | awk -F "=" '{print $2}'`
else
MAC_ADDR=$NULL_MAC
fi
else
MAC_ADDR=$1
fi
echo "Owner's MAC address is: $MAC_ADDR"
# [Stephane] Exits if owner MAC address is already being filtered
# (changing iptables rules too often may crash the drone for a undetermined reason)
CURRENTLY_ALLOWED_MAC_ADDR=`iptables -L | grep MAC | awk -F " " '{print $7}'`
if [ "$CURRENTLY_ALLOWED_MAC_ADDR" = "$MAC_ADDR" ]
then
echo "Drone is already paired with $MAC_ADDR"
exit
fi
if [ $MAC_ADDR != $NULL_MAC ]
then
echo "Setting pairing for: $MAC_ADDR"
# Clearing all rules
iptables -P INPUT ACCEPT
iptables -F
# Allowing only owner's traffic
iptables -A INPUT -m mac --mac-source $MAC_ADDR -j ACCEPT
# allowing ICMP (ping), ftp, nfs and telnet traffic for everyone.
iptables -A INPUT --protocol icmp -j ACCEPT
#iptables -A INPUT --protocol tcp --dport 23 -j ACCEPT
iptables -A INPUT --protocol tcp --dport 21 -j ACCEPT
iptables -A INPUT --protocol tcp --dport 2049 -j ACCEPT
# Blocking all incoming traffic by default
iptables -P INPUT DROP
else
echo "Clearing pairing rule"
# Switching rad LED on
gpio 63 -d ho 1
# Clearing all rules
iptables -F
# Allows incoming connections from anywhere outside
iptables -P INPUT ACCEPT
# Switching rad LED off
gpio 63 -d ho 0
fi

View File

@ -0,0 +1,127 @@
#!/bin/sh
#
# Script to see if an IP adress is already used or not
#
# Getting SSID from config.ini file.
#initializing random generator
cat /data/random_mac.txt > /dev/urandom
/bin/random_mac > /data/random_mac.txt
#echo 2 > /proc/cpu/alignment
#export WORKAREA=/
#export ATH_PLATFORM=ardrone
#/usr/sbin/recEvent /data/athdbg.log&
if [ -s /factory/mac_address.txt ]
then
MAC_ADDR=`cat /factory/mac_address.txt`
else
MAC_ADDR=`cat /data/random_mac.txt`
fi
loadAR6k.sh --setmac $MAC_ADDR
#loadtestcmd.sh
# Waiting 2s for the wifi chip to be ready
sleep 2
# Increasing scan time to help detecting wifi networks
wmiconfig -i ath0 --scan --maxact=80
# Setting retry limits to 6
wmiconfig -i ath0 --setretrylimits 2 0 6 off
# Limiting available rates to 11, 24 or 54 Mb/s
wmiconfig -i ath0 --setfixrates 3 8 11
# Disabling powersaving
wmiconfig -i ath0 --power maxperf
SSID=`grep ssid_single_player /data/config.ini | awk -F "=" '{print $2}'`
# Removing leading and trailing spaces
SSID=`echo $SSID`
if [ -n "$SSID" ]
then
echo "SSID=$SSID"
else
#default SSID.
SSID=ardrone_wifi
echo "SSID=\"$SSID\""
fi
export NETIF=ath0
RANDOM_CHAN=`/bin/channelselector`
echo "Create/Join Ad-Hoc Network $SSID"
#iwconfig ath0 mode ad-hoc
#iwconfig ath0 channel $RANDOM_CHAN
#iwconfig ath0 essid "$SSID"
iwconfig ath0 mode ad-hoc essid owl_2 channel auto
OK=0
BASE_ADRESS=192.168.1.
PROBE=1
while [ $OK -eq 0 ]
do
#configuring interface.
ifconfig ath0 $BASE_ADRESS$PROBE
ifconfig ath0:0 192.168.11.1
arping -I ath0 -q -f -D -w 2 $BASE_ADRESS$PROBE
if [ $? -eq 1 ]
then
if [ -s /data/old_adress.txt ]
then
# Testing previously given adress.
PROBE=`cat /data/old_adress.txt`
else
#generating random odd IP address
PROBE=`/bin/random_ip`
fi
/bin/random_ip > /data/old_adress.txt
else
echo $PROBE > /data/old_adress.txt
OK=1
fi
done
#Configuring DHCP server.
echo "Using address $BASE_ADRESS$PROBE"
echo "start $BASE_ADRESS`expr $PROBE + 1`" > /tmp/udhcpd.conf
echo "end $BASE_ADRESS`expr $PROBE + 4`" >> /tmp/udhcpd.conf
echo "interface ath0" >> /tmp/udhcpd.conf
echo "decline_time 1" >> /tmp/udhcpd.conf
echo "conflict_time 1" >> /tmp/udhcpd.conf
echo "opt subnet 255.255.255.0" >> /tmp/udhcpd.conf
#echo "opt router $BASE_ADRESS$PROBE" >> /tmp/udhcpd.conf
echo "opt lease 1200" >> /tmp/udhcpd.conf
/bin/pairing_setup.sh
# Saving random info for initialization at next reboot
date > /dev/urandom
/bin/random_mac > /data/random_mac.txt
iwconfig ath0 rate 54M
iwconfig ath0 rate auto
telnetd -l /bin/sh
udhcpd /tmp/udhcpd.conf
#diversity&
# Adding route for multicast-packet
# note : ! should be runned after hostapd is initialized !
route add -net 224.0.0.0 netmask 240.0.0.0 dev ath0
#Adding routing table iptable
iptables -t nat -A POSTROUTING -p UDP --sport 8884 -j SNAT --to 192.168.1.254:5554
iptables -t nat -A PREROUTING -p UDP -d 192.168.1.254 --dport 5554 -j DNAT --to 192.168.1.1:8884
iptables -t nat -A POSTROUTING -p UDP --sport 8886 -j SNAT --to 192.168.1.254:5556
optables -t nat -A PREROUTING -p UDP -d 192.168.1.254 --dport 5556 -j DNAT --to 192.168.1.1:8886

View File

@ -0,0 +1,20 @@
# Switch Wifi mode depending on value into /data/config.ini
#
WIFI_MODE=`grep wifi_mode /data/config.ini | awk -F "=" '{ gsub(/ */,"",$2); print $2}'`
case $WIFI_MODE in
0)
/bin/wifi_adhoc.sh
;;
1)
/bin/wifi_infra.sh
;;
2)
/bin/wifi_managed.sh
;;
*)
/bin/wifi_adhoc.sh
;;
esac

View File

@ -0,0 +1,26 @@
#!/bin/sh
#
# Initialization script for Arduino stuff
#
# Loads modules and launches proxy server application
# required for communication with Arduino module.
#
echo Enabling 5V
echo Enabling USB Port
gpio 127 -d ho 1
gpio 127 -d i
echo Loading dwc_otg.ko
insmod /data/dwc_otg.ko
echo Waiting 3s for the device to be ready
sleep 3
echo Setting correct baud rate of 38400 for /dev/ttyPA0
stty -F /dev/ttyPA0 raw speed 38400 -crtscts cs8 -cstopb -parenb
#echo Activate log
#cat /dev/ttyPA0 >> /data/video/gps.log.0 &

View File

@ -0,0 +1,64 @@
#!/bin/sh
# IP_ADDR - this target IP address using CIDR notation:
# <target-ip>/<target-bitmask>
#
# For example:
echo init started...
/bin/mount -t tmpfs tmp /tmp
/bin/mount -t proc proc /proc
/bin/mount -o remount,rw /
/bin/mount -t tmpfs dev /dev
/bin/mkdir -p /dev/shm /dev/pts
/bin/mount -t devpts devpts /dev/pts
/bin/mount -t sysfs sys /sys
#don't allow overcommit (allocate more memory that the physical one)
echo 2 > /proc/sys/vm/overcommit_memory
echo 90 > /proc/sys/vm/overcommit_ratio
#in case of unaligned access print a message and send a SIGBUS
echo 5 > /proc/cpu/alignment
#reboot after 1s after a panic
echo 1 > /proc/sys/kernel/panic
#panic when an oops or BUG is encountered
#disable this for developer
echo 1 > /proc/sys/kernel/panic_on_oops
echo 4 > /sys/module/p6_camif/parameters/lines_per_irq
echo -1 > /proc/sys/kernel/sched_rt_runtime_us
echo "/sbin/mdev" > /proc/sys/kernel/hotplug
/sbin/mdev -s
# Don't show kernel messages
dmesg -n1
/bin/mkdir -p /update
/bin/mount -a
/bin/mkdir -p /data/video
/bin/hostname -F /etc/hostname
/sbin/ifconfig lo 127.0.0.1 up
/sbin/route add -net 127.0.0.0 netmask 255.0.0.0 lo
/bin/factory_reset_cb&
modprobe p6_sdhci
/bin/wifi_setup.sh
#Copy the licenses.txt file to the ftp directory so users can find it.
cp /licenses/licenses.txt /data/video
# Patch to enable button management.
ln -s /dev /dev/input
/data/gps.sh
#mount -o nolock,proto=tcp -t nfs 192.168.0.11:/mnt/video /home/default
/bin/check_update.sh
echo init exit
echo if you want to customize init look at target/generic/target_skeleton/etc files
echo if crtl+c does not work look at the Linux FAQ section.

117
owlps-client/Makefile_drone Normal file
View File

@ -0,0 +1,117 @@
# Source version
ifndef OWLPS_VERSION
OWLPS_VERSION = $$(git describe || echo 'UNKNOWN_VERSION')
endif
# Emplacement de la suite de cross-compilation
TOOLCHAIN_PREFIX = /arm
TOOLCHAIN_BIN = $(TOOLCHAIN_PREFIX)/bin
TOOLCHAIN_USR = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi
TOOLCHAIN_USR_2 = $(TOOLCHAIN_PREFIX)/arm-none-linux-gnueabi/libc
# Compilateur
CC = $(TOOLCHAIN_BIN)/arm-none-linux-gnueabi-gcc
# Répertoire d'installation
PREFIX=/usr/local
INSTALL_DIR= $(PREFIX)/bin
INSTALL_LIB= $(PREFIX)/lib
INSTALL_INC= $(PREFIX)/include
INSTALL_MAN= $(PREFIX)/share/man
# Commandes d'installation et de désinstallation
RM=rm -fv
CP=cp -v
# Cible
TARGET=owlps-client
HEADER=
# Flags
LIBOWLPS_DIR = ../libowlps
LIBOWLPSCLIENT_DIR = ../libowlps-client
CFLAGS = -O2 -Wall -Wextra -Wstrict-prototypes -I.
DEPFLAGS = -MMD
XCFLAGS = $(CFLAGS) $(DEPFLAGS) $(WARN) $(HEADERS)
PICFLAG = -fPIC
LOWLPS = -L$(LIBOWLPS_DIR) -lowlps
LOWLPSA = $(LIBOWLPS_DIR)/libowlps.a
LOWLPSCLIENTA = $(LIBOWLPSCLIENT_DIR)/libowlps-client.a
LIBS = $(LOWLPSCLIENTA) -liw -lm -lrt
DYNAMIC_LIBS = $(LOWLPS) $(LIBS)
SEMISTATIC_LIBS = $(LOWLPSA) $(LIBS)
STATIC_LIBS = $(LOWLPSA) $(LIBS)
LATHEROS = -L$(TOOLCHAIN_USR)/lib -L$(TOOLCHAIN_USR_2)/lib
IATHEROS = -I$(TOOLCHAIN_USR)/include -I$(TOOLCHAIN_USR_2)/include
LDFLAGS = $(IATHEROS) $(LATHEROS)
OWLPSFLAGS = -D OWLPS_VERSION=\"$(OWLPS_VERSION)\"
OWLPSFLAGS += -D DEBUG
## Cibles de compilation standard ##
.PHONY: all semistatic static install uninstall clean purge help
semistatic: $(TARGET)
static: $(TARGET).static
all: semistatic static
# Cancel implicit make rule
%: %.c
#%: %.o
# $(CC) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LDFLAGS) $(DYNAMIC_LIBS)
%: %.o
$(CC) $(STRIPFLAGS) $(XCFLAGS) $(OWLPSFLAGS) -o $@ $^ $(LDFLAGS) $(SEMISTATIC_LIBS)
%.static: %.o
$(CC) $(STRIPFLAGS) $(XCFLAGS) -o $@ $^ $(LDFLAGS) $(STATIC_LIBS) \
-static
%.o: %.c $(HEADER)
$(CC) $(XCFLAGS) $(IATHEROS) $(OWLPSFLAGS) -c $<
## Installation / désinstallation ##
install : $(TARGET)
@$(CP) $(TARGET) $(INSTALL_DIR)
@cd $(INSTALL_DIR) ; chown root:root $(TARGET) ; chmod 755 $(TARGET)
uninstall :
@$(RM) $(INSTALL_DIR)/$(TARGET)
## Nettoyage ##
clean :
@$(RM) -fv *~ *.o *.d
purge : clean
@$(RM) -fv $(TARGET) $(TARGET).static $(TARGET)-drone
## Aide ##
help :
@echo -e "Bibliothèques nécessaires à la compilation :\n\
libowlps1.0 (fournie)\n\
\n\
Cibles possibles :\n\
$(TARGET) (cible par défaut) : Compile le programme $(TARGET).\n\
$(TARGET).static : Compile le programme $(TARGET).static \
(version sans lien dynamique).\n\
$(TARGET).semistatic : Compile le programme $(TARGET).semistatic \
(version sans lien dynamique vers libowlps).\n\
install : Installe le programme $(TARGET).\n\
uninstall : Désinstalle le programme $(TARGET).\n\
clean : Supprime les fichiers temporaires.\n\
purge : Supprime le résultat de la compilation.\n\
\n\
Note : l'installation se fait dans l'arborescence $(PREFIX). \
Modifiez la variable PREFIX du Makefile pour changer ce comportement."
# Local Variables: *
# mode: makefile-gmake *
# End: *