aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile.am2
-rw-r--r--Makefile.in2
-rw-r--r--NEWS.md2
-rw-r--r--README.md5
-rwxr-xr-xconfigure31
-rw-r--r--configure.ac13
-rw-r--r--man/aeroup.man36
-rw-r--r--man/aeroup.man.html54
-rw-r--r--man/aeroup.man.txt74
-rw-r--r--src/Makefile.am5
-rw-r--r--src/Makefile.in25
-rw-r--r--src/buffer.cpp2
-rw-r--r--src/buffer.hpp2
-rw-r--r--src/buffermanager.cpp2
-rw-r--r--src/buffermanager.hpp2
-rw-r--r--src/define_ultimate_fct.h2
-rw-r--r--src/global.hpp2
-rw-r--r--src/gloseq.cpp2
-rw-r--r--src/gloseq.hpp2
-rw-r--r--src/main.cpp23
-rw-r--r--src/main.hpp2
-rw-r--r--src/optmanager.cpp23
-rw-r--r--src/optmanager.hpp10
-rw-r--r--src/regboost.cpp6
-rw-r--r--src/regboost.hpp2
-rw-r--r--src/reglinux.cpp2
-rw-r--r--src/reglinux.hpp2
-rw-r--r--src/rules.cpp2
-rw-r--r--src/rules.hpp2
-rw-r--r--src/ruleserror.hpp2
-rw-r--r--src/serialboost.cpp22
-rw-r--r--src/serialboost.hpp2
-rw-r--r--src/seriallinux.cpp2
-rw-r--r--src/seriallinux.hpp2
-rw-r--r--src/serialprop.cpp2
-rw-r--r--src/serialprop.hpp2
-rw-r--r--src/symlink.cpp118
-rw-r--r--src/symlink.hpp48
-rw-r--r--src/ultimate.cpp2
-rw-r--r--src/ultimate.hpp2
-rw-r--r--udev/60-aeroup.rules7
-rw-r--r--udev/Makefile.am8
42 files changed, 472 insertions, 86 deletions
diff --git a/Makefile.am b/Makefile.am
index cf4eaf6..81b09ad 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,6 +1,6 @@
# For futur Boost test
#ACLOCAL_AMFLAGS = -I ./build-aux/
-SUBDIRS = src
+SUBDIRS = src udev
dist_doc_DATA = README
man1_MANS = man/aeroup.man
EXTRA_DIST = $(man1_MANS)
diff --git a/Makefile.in b/Makefile.in
index 186eac8..2f8b27e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -323,7 +323,7 @@ top_srcdir = @top_srcdir@
# For futur Boost test
#ACLOCAL_AMFLAGS = -I ./build-aux/
-SUBDIRS = src
+SUBDIRS = src udev
dist_doc_DATA = README
man1_MANS = man/aeroup.man
EXTRA_DIST = $(man1_MANS)
diff --git a/NEWS.md b/NEWS.md
index 59cbe94..b99389f 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -27,3 +27,5 @@ AeroUp NEWS file
* ( commit first version on github )
+### AeroUp news for 0.3.0 :
+ * add improved driver support ( with udev linux )
diff --git a/README.md b/README.md
index 5fb4495..7ea4bdf 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-README for AeroUp 0.2
-=====================
+README for AeroUp 0.3.0
+=======================
AeroUp is an open source and multiplatform tool to control Ultimate (programmable light sequencing juggling props) from Aerotech Projects.
@@ -16,6 +16,7 @@ Features
* Get Serial Number command
* Set Serial Number command
* Upload glo sequences command
+* improved driver (udev linux)
* checks syntax of .glo files
multithread, multiplatform gui, and some others original features coming soon...
diff --git a/configure b/configure
index b74a1e1..f2d763a 100755
--- a/configure
+++ b/configure
@@ -633,6 +633,8 @@ ac_subst_vars='am__EXEEXT_FALSE
am__EXEEXT_TRUE
LTLIBOBJS
LIBOBJS
+UDEV_FALSE
+UDEV_TRUE
BOOST_FALSE
BOOST_TRUE
EGREP
@@ -5385,7 +5387,8 @@ fi
done
-ac_config_files="$ac_config_files Makefile src/Makefile"
+ac_config_files="$ac_config_files Makefile src/Makefile udev/Makefile"
+
if test "$HAVE_BOOST_REGEX" = yes; then
@@ -5397,6 +5400,27 @@ else
fi
+# UDEV
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking For Udev" >&5
+$as_echo_n "checking For Udev... " >&6; }
+ if test -d "/etc/udev/rules.d" ; then
+ UDEV_TRUE=
+ UDEV_FALSE='#'
+else
+ UDEV_TRUE='#'
+ UDEV_FALSE=
+fi
+
+if test -z "$UDEV_TRUE"; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"yes\"" >&5
+$as_echo "\"yes\"" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: \"no\"" >&5
+$as_echo "\"no\"" >&6; }
+fi
+
+
+
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
@@ -5538,6 +5562,10 @@ if test -z "${BOOST_TRUE}" && test -z "${BOOST_FALSE}"; then
as_fn_error $? "conditional \"BOOST\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${UDEV_TRUE}" && test -z "${UDEV_FALSE}"; then
+ as_fn_error $? "conditional \"UDEV\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
@@ -6135,6 +6163,7 @@ do
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;;
+ "udev/Makefile") CONFIG_FILES="$CONFIG_FILES udev/Makefile" ;;
*) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
diff --git a/configure.ac b/configure.ac
index 5e50b3c..5c9e857 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
AC_PREREQ([2.69])
AC_CONFIG_AUX_DIR([build-aux])
-AC_INIT([AeroUp], [0.2], [laurentba<at>larueluberlu.net], , [https://github.com/LaurentBa/AeroUp])
+AC_INIT([AeroUp], [0.3.0], [laurentba<at>larueluberlu.net], , [https://github.com/LaurentBa/AeroUp])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/global.hpp])
AC_CONFIG_HEADERS([src/config.h])
@@ -78,10 +78,19 @@ AC_CHECK_FUNCS([memset regcomp strtol])
AC_CHECK_FUNCS([bzero memset strtol])
AC_CONFIG_FILES([Makefile
- src/Makefile])
+ src/Makefile
+ udev/Makefile])
+
AM_CONDITIONAL([BOOST], [test "$HAVE_BOOST_REGEX" = yes])
+# UDEV
+AC_MSG_CHECKING([For Udev])
+AM_CONDITIONAL([UDEV], [test -d "/etc/udev/rules.d" ])
+AM_COND_IF([UDEV], [AC_MSG_RESULT(["yes"])], [AC_MSG_RESULT(["no"])])
+
+
+
AC_OUTPUT
echo \
diff --git a/man/aeroup.man b/man/aeroup.man
index ab78499..171037d 100644
--- a/man/aeroup.man
+++ b/man/aeroup.man
@@ -53,15 +53,41 @@ Set \fIserialNumber\fR on dev \fIserialPort\fR.
.fi
.TP
-.nf
\fB\-i\fR, \fB\-\-verify\fR=\fIgloFile\fR
Verify that syntax glo file is valid
.TP
-.nf
\fB\-u\fR, \fB\-\-uploadGlo\fR=\fIgloFile\fR,\fIserialPort\fR
Verify that syntax glo file is valid and if this is the case upload it on dev \fIserialPort\fR
+
+.TP
+\fB\-k\fR \fB\-\-symlink\fR
+return the serial name used as symlink of kernel name by udev (work with linux only). see the improved management driver section below.
+But you can also use this command to retrieve an more readable id than serial number.
+
+.TP
+Improved management driver (linux only)
+note: you may need to update to last bootloader (aeroup was tested with Club_Ball_Poi_V2.3.hex).
+you 'll find it on the Aerotech ltd web page.
+
+To use the system management driver, you first need to set the apropriate serial number
+in your props with the --setSerial option. (See the address table belowx).
+And put the file aeroup.rule to your udev rules directory if it wasn't done during installation.
+When you plug your props you should now have a corresponding symlink to your /dev directory.
+
+.nf
+================================================
+ Props | Range adress | id char | Symlinks
+================================================
+ Ball | 0.0.98.0/24 | b | /dev/Ball#
+ Staff | 0.0.115.0/24 | s | /dev/Staff#
+ Club | 0.0.99.0/24 | c | /dev/Club#
+ Poi | 0:0:112:0/24 | p | /Poi/Poi#
+================================================
+.fi
+
+
.TP
.nf
\fB\-P\fR, \fB\-\-thread\fR
@@ -121,3 +147,9 @@ License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
+
+
+
+
+
+
diff --git a/man/aeroup.man.html b/man/aeroup.man.html
index 3a254f5..b99d1d4 100644
--- a/man/aeroup.man.html
+++ b/man/aeroup.man.html
@@ -9,11 +9,13 @@
<!-- Manpage converted by man2html 3.0.1 -->
SYNOPSIS
- aeroup [-t serialPort] [-o serialPort] [-c red,green,blue,serialPort] [-G serialPort] [-S serialNumber,serialPort] [-i gloFile] [-u gloFile,serialPort] [-U gloc‐
- File,serialPort] [-v] [-P]
+ aeroup [-t serialPort] [-o serialPort] [-c red,green,blue,serialPort] [-G
+ serialPort] [-S serialNumber,serialPort] [-i gloFile] [-u gloFile,serialPort]
+ [-U glocFile,serialPort] [-P] [-v] [-h]
DESCRIPTION
- AeroUp is an open source tool to use with Ultimate (programmable light sequencing juggling props) from Aerotech Projects.
+ AeroUp is an open source command line tool to control Ultimate (programmable
+ light sequencing juggling props) from Aerotech Projects.
OPTIONS
-t, --test=serialPort
@@ -24,7 +26,6 @@ OPTIONS
-c, --color=red,green,blue,serialPort
Send a color command on dev serialPort.
- Each sub options have to be separate with a comma without blank.
Colors red, green, blue can be hexadecimal or decimal value in range of [0-255]
hex value have to begin with 0x.
@@ -33,20 +34,49 @@ OPTIONS
-S, --setSerial=serialNumber,serialPort
Set serialNumber on dev serialPort.
- 32 bits value can be writen in hexadecimal (0x#) binary (0b#) or decimal (#).
+ 32 bits value can be writen in hexadecimal (0x#) or decimal (#).
-i, --verify=gloFile
Verify that syntax glo file is valid
- -u, --verify=gloFile,serialPort
- Verify that syntax glo file is valid and if this is the case upload it on dev serialPort
+ -u, --uploadGlo=gloFile,serialPort
+ Verify that syntax glo file is valid and if this is the case upload it
+ on dev serialPort
+
+ -k --symlink
+ return the serial name used as symlink of kernel name by udev (work
+ with linux only). see the improved management driver section below.
+ But you can also use this command to retrieve an more readable id than
+
+ ================================================
+ Props | Range adress | id char | Symlinks
+ ================================================
+ Ball | 0.0.98.0/24 | b | /dev/Ball#
+ Staff | 0.0.115.0/24 | s | /dev/Staff#
+ Club | 0.0.99.0/24 | c | /dev/Club#
+ Poi | 0:0:112:0/24 | p | /Poi/Poi#
+ ================================================
-P, --thread
Multithread mode, not implemented yet...
- -u, --verify=glocFile,serialPort
+ -U, --uploadGloc=glocFile,serialPort
not implemented yet...
+ -v Verbose mode
+
+ -h, --help
+ Print help
+
+ --version
+ Print version
+
+ The last bootloader V2.3 from Aerotech needs to be installed first to use Serial number features.
+ Each sub options have to be separate with a comma without blank.
+
+EXAMPLES
+ aeroup -t /dev/ttyACM0
+ aeroup -o /dev/ttyACM0 -o /dev/ttyACM1 -t /dev/ttyACM3
aeroup -c 255,69,255,/dev/ttyACM0 27,3,7,/dev/ttyACM1
aeroup -S 0x0b01/dev/ttyACM0
aeroup -G /dev/ttyACM0
@@ -55,13 +85,11 @@ SEE ALSO
AeroUp project page : https://github.com/LaurentBa/AeroUp
AeroWrite project page : https://github.com/LaurentBa/AeroWrite
-BUGS
- No known bugs.
-
AUTHOR
- Laurent Barattero (laurent@larueluberlu.net.in)
+ Written by Laurent Barattero (laurent@larueluberlu.net.in)
+
-0.8 December 2013 <B>man(1)</B>
+0.8 December 2013 <B>man(1)</B>
</PRE>
<HR>
<ADDRESS>
diff --git a/man/aeroup.man.txt b/man/aeroup.man.txt
index 9e88efc..7b93858 100644
--- a/man/aeroup.man.txt
+++ b/man/aeroup.man.txt
@@ -1,4 +1,4 @@
-man(1) AeroUp man page man(1)
+man(1) AeroUp man page man(1)
@@ -7,13 +7,15 @@ NAME
SYNOPSIS
- aeroup [-t serialPort] [-o serialPort] [-c red,green,blue,serialPort] [-G serialPort] [-S serialNumber,serialPort] [-i gloFile] [-u gloFile,serialPort] [-U gloc‐
- File,serialPort] [-P] [-v] [-h]
+ aeroup [-t serialPort] [-o serialPort] [-c red,green,blue,serialPort] [-G
+ serialPort] [-S serialNumber,serialPort] [-i gloFile] [-u gloFile,serialPort]
+ [-U glocFile,serialPort] [-P] [-v] [-h]
DESCRIPTION
- AeroUp is an open source command line tool to use with Ultimate (programmable light sequencing juggling props) from Aerotech Projects.
+ AeroUp is an open source command line tool to control Ultimate (programmable
+ light sequencing juggling props) from Aerotech Projects.
OPTIONS
@@ -27,7 +29,6 @@ OPTIONS
-c, --color=red,green,blue,serialPort
Send a color command on dev serialPort.
- Each sub options have to be separate with a comma without blank.
Colors red, green, blue can be hexadecimal or decimal value in range of [0-255]
hex value have to begin with 0x.
@@ -36,24 +37,57 @@ OPTIONS
get serial number on dev serialPort, and print it to standard output.
+
-S, --setSerial=serialNumber,serialPort
Set serialNumber on dev serialPort.
- 32 bits value can be writen in hexadecimal (0x#) binary (0b#) or decimal (#).
+ 32 bits value can be writen in hexadecimal (0x#) or decimal (#).
-i, --verify=gloFile
Verify that syntax glo file is valid
- -u, --verify=gloFile,serialPort
- Verify that syntax glo file is valid and if this is the case upload it on dev serialPort
+ -u, --uploadGlo=gloFile,serialPort
+ Verify that syntax glo file is valid and if this is the case upload it
+ on dev serialPort
+
+
+
+ -k --symlink
+ return the serial name used as symlink of kernel name by udev (work
+ with linux only). see the improved management driver section below.
+ But you can also use this command to retrieve an more readable id than
+ serial number.
+
+
+ Improved management driver (linux only)
+ note: you may need to update to last bootloader (aeroup was tested
+ with Club_Ball_Poi_V2.3.hex). you 'll find it on the Aerotech ltd web
+ page.
+
+ To use the system management driver, you first need to set the apropri‐
+ ate serial number in your props with the --setSerial option. (See the
+ address table belowx). And put the file aeroup.rule to your udev rules
+ directory if it wasn't done during installation. When you plug your
+ props you should now have a corresponding symlink to your /dev direc‐
+ tory.
+
+ ================================================
+ Props | Range adress | id char | Symlinks
+ ================================================
+ Ball | 0.0.98.0/24 | b | /dev/Ball#
+ Staff | 0.0.115.0/24 | s | /dev/Staff#
+ Club | 0.0.99.0/24 | c | /dev/Club#
+ Poi | 0:0:112:0/24 | p | /Poi/Poi#
+ ================================================
+
-P, --thread
Multithread mode, not implemented yet...
- -u, --verify=glocFile,serialPort
+ -U, --uploadGloc=glocFile,serialPort
not implemented yet...
@@ -67,6 +101,10 @@ OPTIONS
--version
Print version
+ The last bootloader V2.3 from Aerotech needs to be installed first to use Serial number features.
+ Each sub options have to be separate with a comma without blank.
+
+
EXAMPLES
aeroup -t /dev/ttyACM0
@@ -81,15 +119,23 @@ SEE ALSO
AeroUp project page : https://github.com/LaurentBa/AeroUp
AeroWrite project page : https://github.com/LaurentBa/AeroWrite
+AUTHOR
+ Written by Laurent Barattero (laurent@larueluberlu.net.in)
+
+
+COPYRIGHT
+ Copyright © 2013 BARATTERO Laurent License GPLv3+: GNU GPL version 3 or later
+ <http://gnu.org/licenses/gpl.html>.
+ This is free software: you are free to change and redistribute it. There is
+ NO WARRANTY, to the extent permitted by law.
+
+
+
-BUGS
- No known bugs.
-AUTHOR
- Laurent Barattero (laurent@larueluberlu.net.in)
-0.8 December 2013 man(1)
+0.8 December 2013 man(1)
diff --git a/src/Makefile.am b/src/Makefile.am
index bf11705..26da352 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -11,8 +11,7 @@ ext_src += seriallinux.cpp
#echo have not boost
endif
-aeroup_SOURCES = \
- main.cpp \
+aeroup_SOURCES = main.cpp \
ultimate.cpp \
serialprop.cpp \
optmanager.cpp \
@@ -20,9 +19,11 @@ aeroup_SOURCES = \
buffer.cpp \
buffermanager.cpp \
rules.cpp \
+ symlink.cpp \
${ext_src}
aeroup_CPPFLAGS = -W -Wall -std=c++11
aeroup_LDFLAGS =
#LIBS +=
#-DSERIAL_BOOST_LIB
+
diff --git a/src/Makefile.in b/src/Makefile.in
index 25f19e1..51fb0db 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -95,8 +95,8 @@ am__installdirs = "$(DESTDIR)$(bindir)"
PROGRAMS = $(bin_PROGRAMS)
am__aeroup_SOURCES_DIST = main.cpp ultimate.cpp serialprop.cpp \
optmanager.cpp gloseq.cpp buffer.cpp buffermanager.cpp \
- rules.cpp serialboost.cpp regboost.cpp reglinux.cpp \
- seriallinux.cpp
+ rules.cpp symlink.cpp serialboost.cpp regboost.cpp \
+ reglinux.cpp seriallinux.cpp
@BOOST_TRUE@am__objects_1 = aeroup-serialboost.$(OBJEXT) \
@BOOST_TRUE@ aeroup-regboost.$(OBJEXT)
@BOOST_FALSE@am__objects_2 = aeroup-reglinux.$(OBJEXT) \
@@ -106,7 +106,7 @@ am_aeroup_OBJECTS = aeroup-main.$(OBJEXT) aeroup-ultimate.$(OBJEXT) \
aeroup-serialprop.$(OBJEXT) aeroup-optmanager.$(OBJEXT) \
aeroup-gloseq.$(OBJEXT) aeroup-buffer.$(OBJEXT) \
aeroup-buffermanager.$(OBJEXT) aeroup-rules.$(OBJEXT) \
- $(am__objects_3)
+ aeroup-symlink.$(OBJEXT) $(am__objects_3)
aeroup_OBJECTS = $(am_aeroup_OBJECTS)
aeroup_LDADD = $(LDADD)
aeroup_LINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(aeroup_LDFLAGS) \
@@ -268,8 +268,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
ext_src = $(am__append_1) $(am__append_2)
#echo have not boost
-aeroup_SOURCES = \
- main.cpp \
+aeroup_SOURCES = main.cpp \
ultimate.cpp \
serialprop.cpp \
optmanager.cpp \
@@ -277,6 +276,7 @@ aeroup_SOURCES = \
buffer.cpp \
buffermanager.cpp \
rules.cpp \
+ symlink.cpp \
${ext_src}
aeroup_CPPFLAGS = -W -Wall -std=c++11
@@ -395,6 +395,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aeroup-serialboost.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aeroup-seriallinux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aeroup-serialprop.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aeroup-symlink.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/aeroup-ultimate.Po@am__quote@
.cpp.o:
@@ -523,6 +524,20 @@ aeroup-rules.obj: rules.cpp
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aeroup_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aeroup-rules.obj `if test -f 'rules.cpp'; then $(CYGPATH_W) 'rules.cpp'; else $(CYGPATH_W) '$(srcdir)/rules.cpp'; fi`
+aeroup-symlink.o: symlink.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aeroup_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT aeroup-symlink.o -MD -MP -MF $(DEPDIR)/aeroup-symlink.Tpo -c -o aeroup-symlink.o `test -f 'symlink.cpp' || echo '$(srcdir)/'`symlink.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/aeroup-symlink.Tpo $(DEPDIR)/aeroup-symlink.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='symlink.cpp' object='aeroup-symlink.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aeroup_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aeroup-symlink.o `test -f 'symlink.cpp' || echo '$(srcdir)/'`symlink.cpp
+
+aeroup-symlink.obj: symlink.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aeroup_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT aeroup-symlink.obj -MD -MP -MF $(DEPDIR)/aeroup-symlink.Tpo -c -o aeroup-symlink.obj `if test -f 'symlink.cpp'; then $(CYGPATH_W) 'symlink.cpp'; else $(CYGPATH_W) '$(srcdir)/symlink.cpp'; fi`
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/aeroup-symlink.Tpo $(DEPDIR)/aeroup-symlink.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='symlink.cpp' object='aeroup-symlink.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aeroup_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o aeroup-symlink.obj `if test -f 'symlink.cpp'; then $(CYGPATH_W) 'symlink.cpp'; else $(CYGPATH_W) '$(srcdir)/symlink.cpp'; fi`
+
aeroup-serialboost.o: serialboost.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(aeroup_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT aeroup-serialboost.o -MD -MP -MF $(DEPDIR)/aeroup-serialboost.Tpo -c -o aeroup-serialboost.o `test -f 'serialboost.cpp' || echo '$(srcdir)/'`serialboost.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/aeroup-serialboost.Tpo $(DEPDIR)/aeroup-serialboost.Po
diff --git a/src/buffer.cpp b/src/buffer.cpp
index 9c0ffec..d342c30 100644
--- a/src/buffer.cpp
+++ b/src/buffer.cpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 28/12/2013 07:06:20
* Revision: none
* Compiler: gcc
diff --git a/src/buffer.hpp b/src/buffer.hpp
index eae7080..538dfce 100644
--- a/src/buffer.hpp
+++ b/src/buffer.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 28/12/2013 07:01:58
* Revision: none
* Compiler: gcc
diff --git a/src/buffermanager.cpp b/src/buffermanager.cpp
index 72ae576..46d412f 100644
--- a/src/buffermanager.cpp
+++ b/src/buffermanager.cpp
@@ -22,7 +22,7 @@
* Description: take the parsed, tokenized lines and manage them.
* send also some rules test
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 30/12/2013 12:12:46
* Revision: none
* Compiler: gcc
diff --git a/src/buffermanager.hpp b/src/buffermanager.hpp
index 0b14781..2042329 100644
--- a/src/buffermanager.hpp
+++ b/src/buffermanager.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 30/12/2013 12:07:43
* Revision: none
* Compiler: gcc
diff --git a/src/define_ultimate_fct.h b/src/define_ultimate_fct.h
index 36fe030..85450ba 100644
--- a/src/define_ultimate_fct.h
+++ b/src/define_ultimate_fct.h
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 30/12/2013 12:50:40
* Revision: none
* Compiler: gcc
diff --git a/src/global.hpp b/src/global.hpp
index be20d98..da114c1 100644
--- a/src/global.hpp
+++ b/src/global.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 20/12/2013 00:09:35
* Revision: none
* Compiler: gcc
diff --git a/src/gloseq.cpp b/src/gloseq.cpp
index 370b522..7bdf70a 100644
--- a/src/gloseq.cpp
+++ b/src/gloseq.cpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 27/12/2013 10:38:49
* Revision: none
* Compiler: gcc
diff --git a/src/gloseq.hpp b/src/gloseq.hpp
index 3487f6b..83d80d0 100644
--- a/src/gloseq.hpp
+++ b/src/gloseq.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 27/12/2013 10:40:44
* Revision: none
* Compiler: gcc
diff --git a/src/main.cpp b/src/main.cpp
index 920a89b..68d919f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -23,7 +23,7 @@
* lib getopt needed this is for unix users
*
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 20/12/2013 00:57:44
* Revision: none
* Compiler: gcc
@@ -80,6 +80,7 @@ main ( int argc, char *argv[] )
{"verify", required_argument, NULL, 'i'},
{"uploadGlo", required_argument, NULL, 'u'},
{"uploadGloc", no_argument, NULL, 'U'},
+ {"symlink", no_argument, NULL, 'k'},
{"verbose", no_argument, NULL, 'v'},
{"thread", no_argument, NULL, 1 },
{"version", no_argument, &version, 1 },
@@ -88,7 +89,7 @@ main ( int argc, char *argv[] )
};
/* getopt_long stores the option index here. */
int option_index = 0;
- c = getopt_long (argc, argv, "o:t:c:G:S:u:U:i:vh",
+ c = getopt_long (argc, argv, "o:t:c:G:S:u:U:k:i:vh",
long_options, &option_index);
/* Detect the end of the options. */
@@ -145,6 +146,10 @@ main ( int argc, char *argv[] )
manager.subRoutine(FLAG_UP_GLOC);
break;
+ case 'k':
+ manager.addItemSymlink(optarg);
+ break;
+
case 'v':
VERBOSE_AERO = true;
break;
@@ -196,6 +201,12 @@ main ( int argc, char *argv[] )
{
return(EXIT_FAILURE);
}
+ catch( Symlink::Bad_Symlink )
+ {
+ cerr << "Error : Bad Symlink input\n"
+ << "'$man aeroup' section 'Improved management driver' may be help you\n";
+ return(EXIT_FAILURE);
+ }
catch(...)
{
//return(EXIT_FAILURE);
@@ -221,14 +232,16 @@ aeroHelp()
<< " -c, --color=R,G,B,serialPort Send a color command on dev serialPort.\n"
<< " R,G,B can be hex (0x#), dec (#) value,\n"
<< " in range of [0-255] (8bit).\n"
- << " -G, --getSerial=serialPort get serial number on dev serialPort, and print it to standard output.\n"
+ << " -G, --getSerial=serialPort Get serial number on dev serialPort, and print it to standard output.\n"
<< " -S, --setSerial=serialNumber,serialPort Set serialNumber on dev serialPort. the 32 bits serialNumber value\n"
<< " can be writen in hex (0x#) or dec (#).\n"
<< " -i, --verify=gloFile Verify that syntax glo file is valid.\n"
- << " -u, --uploadGloc=gloFile,serialPort Verify that syntax glo file is valid, and if this is the case\n"
+ << " -k --symlink Return the serial name used as symlink of kernel name by udev.\n"
+ << " More info in the AeroUp man.\n"
+ << " -u, --uploadGloc=gloFile,serialPort Verify that syntax glo file is valid, and if this is the case,\n"
<< " upload it on dev serialPort.\n"
<< " -P, --thread Multithread mode, not implemented yet...\n"
- << " -U, --uploadGloc=glocFile,serialPort not implemented yet...\n"
+ << " -U, --uploadGloc=glocFile,serialPort Not implemented yet...\n"
<< " -v Verbose mode.\n"
<< " -h, --help Print help.\n"
<< " --version Print version.\n\n"
diff --git a/src/main.hpp b/src/main.hpp
index d66dfff..351cd10 100644
--- a/src/main.hpp
+++ b/src/main.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 21/12/2013 03:56:20
* Revision: none
* Compiler: gcc
diff --git a/src/optmanager.cpp b/src/optmanager.cpp
index 9ea843f..6a82787 100644
--- a/src/optmanager.cpp
+++ b/src/optmanager.cpp
@@ -27,7 +27,7 @@
* for the time being, the value is set to max.
* we could test string before conversion.
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 23/12/2013 23:31:46
* Revision: none
* Compiler: gcc
@@ -112,6 +112,13 @@ OptManager::start()
sendGetSerial(*iter);
}
+ // Symlink
+ for (vector<string>::iterator iter = symlinkList.begin();
+ iter != symlinkList.end(); ++iter)
+ {
+ sendSymlink(*iter);
+ }
+
// Set serial number
for (vector<optSerial>::iterator iter = setSerialList.begin();
iter != setSerialList.end(); ++iter)
@@ -179,6 +186,20 @@ OptManager::sendGetSerial( std::string port_name)
}
/*
+ * Method: OptManager :: sendSymlink
+ */
+ void
+OptManager::sendSymlink( std::string port_name)
+{
+ string sym_out;
+ Ultimate prop(port_name);
+ string serial_number = prop.getSerial();
+ sym_out = Symlink::getSym(serial_number);
+ cout << sym_out << endl;
+
+
+}
+/*
* Method: OptManager :: sendSetSerial
*/
void
diff --git a/src/optmanager.hpp b/src/optmanager.hpp
index 3252a91..2b89933 100644
--- a/src/optmanager.hpp
+++ b/src/optmanager.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 23/12/2013 22:59:22
* Revision: none
* Compiler: gcc
@@ -39,9 +39,11 @@
#include <getopt.h>
#include <string>
#include <vector>
+
#include "global.hpp"
#include "ultimate.hpp"
#include "gloInterface.hpp"
+#include "symlink.hpp"
#define MAX_LEN_OPT 2
@@ -50,6 +52,7 @@
#define FLAG_UP_GLOC 0x4
#define FLAG_COLOR 0x8
#define FLAG_VERIFY 0x10
+#define FLAG_SYMLINK 0x20
/*
* Class: OptManager
@@ -74,6 +77,9 @@ class OptManager
void addItemVerify(std::string glo_file)
{verifyList.push_back(glo_file);}
+ void addItemSymlink(std::string port_name)
+ {symlinkList.push_back(port_name);}
+
void subRoutine(const short int FLAG);
private:
@@ -82,6 +88,7 @@ class OptManager
void sendStart(std::string port_name);
void sendColor(uint8_t red, uint8_t green, uint8_t blue, std::string port_name);
void sendGetSerial(std::string port_name);
+ void sendSymlink(std::string port_name);
void sendSetSerial(uint32_t i_serialNumber, std::string port);
void sendVerify(std::string fileName);
void sendUpGlo(std::string fileName, std::string port);
@@ -134,6 +141,7 @@ class OptManager
std::vector<std::string> verifyList;
std::vector<optSerial> setSerialList;
std::vector<std::string> getSerialList;
+ std::vector<std::string> symlinkList;
// end of Structures and variables for opts containers
}; /* ----- end of class OptManager ----- */
diff --git a/src/regboost.cpp b/src/regboost.cpp
index bf3cf87..453bf08 100644
--- a/src/regboost.cpp
+++ b/src/regboost.cpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 19/12/2013 05:22:37
* Revision: none
* Compiler: gcc
@@ -34,7 +34,7 @@
using namespace std;
-using namespace boost;
+//using namespace boost;
RegBoost::RegBoost ( )
{
@@ -47,7 +47,7 @@ RegBoost::isValidSyntax ( string &rline )
{
for (int i = 0; i < REG_TAB_LEN; i++)
{
- if ( regex_match(rline.begin(), rline.end(), reg_tab[i]) )
+ if ( boost::regex_match(rline.begin(), rline.end(), reg_tab[i]) )
{
#ifdef DEBUG
cout << rline << " -> ok" << endl;
diff --git a/src/regboost.hpp b/src/regboost.hpp
index 956be25..3fe5c80 100644
--- a/src/regboost.hpp
+++ b/src/regboost.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 19/12/2013 05:23:16
* Revision: none
* Compiler: gcc
diff --git a/src/reglinux.cpp b/src/reglinux.cpp
index 854d1b4..60d3f20 100644
--- a/src/reglinux.cpp
+++ b/src/reglinux.cpp
@@ -21,7 +21,7 @@
*
* Description: Regex lib (linux version)
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 18/01/2014 01:16:04
* Revision: none
* Compiler: gcc
diff --git a/src/reglinux.hpp b/src/reglinux.hpp
index 16ffd43..742adcc 100644
--- a/src/reglinux.hpp
+++ b/src/reglinux.hpp
@@ -21,7 +21,7 @@
*
* Description: Regex lib (linux version)
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 18/01/2014 01:16:31
* Revision: none
* Compiler: gcc
diff --git a/src/rules.cpp b/src/rules.cpp
index 741a2cd..c209fba 100644
--- a/src/rules.cpp
+++ b/src/rules.cpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 31/12/2013 18:33:14
* Revision: none
* Compiler: gcc
diff --git a/src/rules.hpp b/src/rules.hpp
index a658fce..3c7c7e8 100644
--- a/src/rules.hpp
+++ b/src/rules.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 31/12/2013 18:32:35
* Revision: none
* Compiler: gcc
diff --git a/src/ruleserror.hpp b/src/ruleserror.hpp
index d84192d..3bf3d56 100644
--- a/src/ruleserror.hpp
+++ b/src/ruleserror.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 06/01/2014 10:04:32
* Revision: none
* Compiler: gcc
diff --git a/src/serialboost.cpp b/src/serialboost.cpp
index 821fed8..bd55630 100644
--- a/src/serialboost.cpp
+++ b/src/serialboost.cpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 20/12/2013 00:06:15
* Revision: none
* Compiler: gcc
@@ -32,7 +32,7 @@
#include <serialboost.hpp>
using namespace std;
-using namespace boost;
+//using namespace boost;
/*
@@ -53,7 +53,7 @@ SerialBoost::SerialBoost ( std::string port_name ):
throw;
}
- typedef asio::serial_port_base asio_serial;
+ typedef boost::asio::serial_port_base asio_serial;
port.set_option(asio_serial::baud_rate(19200));
port.set_option(asio_serial::flow_control(asio_serial::flow_control::none));
port.set_option(asio_serial::parity( asio_serial::parity::none));
@@ -88,7 +88,7 @@ SerialBoost::~SerialBoost ( )
void
SerialBoost::sendChar(char c)
{
- port.write_some(asio::buffer(&c, 1));
+ port.write_some(boost::asio::buffer(&c, 1));
}
/*
@@ -100,7 +100,7 @@ SerialBoost::sendChar(char c)
void
SerialBoost::sendChar(unsigned char c)
{
- port.write_some(asio::buffer(&c, 1));
+ port.write_some(boost::asio::buffer(&c, 1));
}
@@ -117,7 +117,7 @@ SerialBoost::sendChar(unsigned char c)
void
SerialBoost::sendString(char* s, int nb_char)
{
- port.write_some(asio::buffer(s, nb_char));
+ port.write_some(boost::asio::buffer(s, nb_char));
}
/*
@@ -129,7 +129,7 @@ SerialBoost::sendString(char* s, int nb_char)
void
SerialBoost::sendString(unsigned char* s, int nb_char)
{
- port.write_some(asio::buffer(s, nb_char));
+ port.write_some(boost::asio::buffer(s, nb_char));
}
/*
@@ -141,7 +141,7 @@ SerialBoost::sendString(unsigned char* s, int nb_char)
void
SerialBoost::sendString(const char* s, int nb_char)
{
- port.write_some(asio::buffer(s, nb_char));
+ port.write_some(boost::asio::buffer(s, nb_char));
}
/*
@@ -153,7 +153,7 @@ SerialBoost::sendString(const char* s, int nb_char)
void
SerialBoost::sendString(string s)
{
- port.write_some(asio::buffer(s.c_str(),s.size()));
+ port.write_some(boost::asio::buffer(s.c_str(),s.size()));
}
/**
@@ -173,7 +173,7 @@ SerialBoost::readLine()
string result;
for(;;)
{
- asio::read(port, asio::buffer(&c,1));
+ boost::asio::read(port, boost::asio::buffer(&c,1));
switch(c)
{
case '\r':
@@ -194,7 +194,7 @@ SerialBoost::readLine()
*/
void SerialBoost::getString(char* s, int nb_char)
{
- asio::read(port, asio::buffer(s, nb_char));
+ boost::asio::read(port, boost::asio::buffer(s, nb_char));
}
diff --git a/src/serialboost.hpp b/src/serialboost.hpp
index 0b5dd9d..18aa1a6 100644
--- a/src/serialboost.hpp
+++ b/src/serialboost.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 20/12/2013 00:06:28
* Revision: none
* Compiler: gcc
diff --git a/src/seriallinux.cpp b/src/seriallinux.cpp
index 27ba784..9d20618 100644
--- a/src/seriallinux.cpp
+++ b/src/seriallinux.cpp
@@ -22,7 +22,7 @@
* Description: Serial lib linux (termios version)
* used if haven't boost
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 17/01/2014 03:31:32
* Revision: none
* Compiler: gcc
diff --git a/src/seriallinux.hpp b/src/seriallinux.hpp
index 82b7475..b515725 100644
--- a/src/seriallinux.hpp
+++ b/src/seriallinux.hpp
@@ -22,7 +22,7 @@
* Description: Serial lib linux (termios version)
* used if haven't boost
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 17/01/2014 03:31:35
* Revision: none
* Compiler: gcc
diff --git a/src/serialprop.cpp b/src/serialprop.cpp
index 309a75c..bbcef9a 100644
--- a/src/serialprop.cpp
+++ b/src/serialprop.cpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 21/12/2013 01:39:53
* Revision: none
* Compiler: gcc
diff --git a/src/serialprop.hpp b/src/serialprop.hpp
index d335c46..a78a0b2 100644
--- a/src/serialprop.hpp
+++ b/src/serialprop.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 19/12/2013 23:25:14
* Revision: none
* Compiler: gcc
diff --git a/src/symlink.cpp b/src/symlink.cpp
new file mode 100644
index 0000000..2d1216a
--- /dev/null
+++ b/src/symlink.cpp
@@ -0,0 +1,118 @@
+/*
+ * Filename: Symlink.cpp
+ *
+ * Description: Return a beautiful Symlink for udev
+ *
+ * Version: 0.3.0.1
+ * Created: 19/01/2014 14:51:05
+ * Revision: none
+ * Compiler: gcc
+ *
+ * Author: BARATTERO Laurent, laurentba<at>larueluberlu.net
+ * Organization: La rue Luberlu
+ */
+
+#include "symlink.hpp"
+
+static uint32_t serialNumber;
+static uint8_t id_prob;
+static uint8_t num;
+static std::stringstream ss;
+
+const uint8_t BALL = 0x62; // 'b'
+const uint8_t STAFF = 0x73; // 's'
+const uint8_t CLUB = 0x63; // 'c'
+const uint8_t POI = 0x70; // 'p'
+const uint32_t PROB_MASK = 0x0000ff00;
+const uint32_t NUM_MASK = 0x000000ff;
+
+ /*
+ * Name: Symlink::getSym
+ * Description: return Symlink
+ */
+ std::string
+Symlink::getSym(std::string serial_str)
+{
+ /* test entry */
+ if(EOF == sscanf(serial_str.c_str(), "%d", &serialNumber))
+ {
+ throw Symlink::Bad_Symlink();
+ }
+ //if (serialNumber > 0xffffffff)
+ if (serialNumber > 0x0)
+ {
+ throw Symlink::Bad_Symlink();
+ }
+
+ ss << std::hex << serial_str ;
+ ss >> serialNumber;
+
+ // comment
+ //std::cout << serial_str;
+ //std::cout << serialNumber;
+
+ if((serialNumber & 0xffff0000) != 0)
+ Symlink::badSerNum();
+
+ id_prob = ((PROB_MASK & serialNumber) >> 8 );
+ num = (NUM_MASK & serialNumber);
+
+
+ ss << num;
+ std::string x;
+ ss >> x;
+ std::cout << x;
+
+ // now we use serial_str for output
+ serial_str = Symlink::whatProp(id_prob);
+ serial_str += std::to_string(num);
+
+ //std::cout << serial_str;
+
+ return serial_str;
+}
+
+
+ /*
+ * Name: Symlink::whatProp
+ * Description: send error ( for future)
+ */
+ void
+Symlink::badSerNum()
+{
+ throw Symlink::Bad_Symlink();
+
+}
+
+
+ /*
+ * Name: Symlink::whatProp
+ * Description: addr to symlink
+ */
+ std::string
+Symlink::whatProp(uint8_t id)
+{
+ switch (id)
+ {
+ case BALL:
+ return "Ball";
+ break;
+
+ case STAFF:
+ return "Staff";
+ break;
+
+ case CLUB:
+ return "Club";
+ break;
+
+ case POI:
+ return "Poi";
+ break;
+
+ default:
+ //UdevLink::badSerNum();
+ return "AeroProb";
+ break;
+ } /* ----- end switch ----- */
+}
diff --git a/src/symlink.hpp b/src/symlink.hpp
new file mode 100644
index 0000000..6bfe035
--- /dev/null
+++ b/src/symlink.hpp
@@ -0,0 +1,48 @@
+/*
+ * Filename: Symlink.hpp
+ *
+ * Description: Return a beautiful Symlink for udev
+ *
+ * Version: 0.3.0.1
+ * Created: 19/01/2014 14:51:08
+ * Revision: none
+ * Compiler: gcc
+ *
+ * Author: BARATTERO Laurent, laurentba<at>larueluberlu.net
+ * Organization: La rue Luberlu
+ */
+
+#ifndef Symlink_INC
+#define Symlink_INC
+
+#include <stdlib.h>
+#include <string>
+#include <exception>
+#include <sstream>
+#include <unistd.h>
+#include <iostream>
+
+/*
+ * Name: Symlink
+ * Description: Symlink declaration
+ */
+namespace Symlink
+{
+// extern uint16_t BALL;
+// extern uint16_t STAFF;
+// extern uint16_t CLUB;
+// extern uint16_t POI;
+
+
+
+// const uint32_t PROB_MASK;
+// const uint32_t NUM_MASK;
+
+ std::string getSym(std::string serial_str);
+ std::string whatProp(uint8_t id);
+ void badSerNum();
+
+ class Bad_Symlink{};
+}
+
+#endif /* ----- #ifndef symlink_INC ----- */
diff --git a/src/ultimate.cpp b/src/ultimate.cpp
index 63df51e..0293ea2 100644
--- a/src/ultimate.cpp
+++ b/src/ultimate.cpp
@@ -21,7 +21,7 @@
*
* Description: Interface for Ultimate props
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 19/12/2013 20:28:22
* Revision: none
* Compiler: gcc
diff --git a/src/ultimate.hpp b/src/ultimate.hpp
index 355bd14..77c5055 100644
--- a/src/ultimate.hpp
+++ b/src/ultimate.hpp
@@ -21,7 +21,7 @@
*
* Description:
*
- * Version: 0.2
+ * Version: 0.3.0.1
* Created: 19/12/2013 20:28:34
* Revision: none
* Compiler: gcc
diff --git a/udev/60-aeroup.rules b/udev/60-aeroup.rules
new file mode 100644
index 0000000..a860e8d
--- /dev/null
+++ b/udev/60-aeroup.rules
@@ -0,0 +1,7 @@
+ATTRS{idProduct}=="000a", PROGRAM="/usr/local/bin/aeroup -k /dev/%k", SYMLINK+="%c"
+
+#PROGRAM="/usr/local/bin/aeroup -G /dev/%k", SYMLINK+="%c"
+#ATTRS{idProduct}=="000a"
+#ATTRS{idVendor}=="04d8"
+#ATTRS{manufacturer}=="Microchip Technology Inc."
+#ATTRS{product}=="Aerotech Glo-Ultimate "
diff --git a/udev/Makefile.am b/udev/Makefile.am
new file mode 100644
index 0000000..437a621
--- /dev/null
+++ b/udev/Makefile.am
@@ -0,0 +1,8 @@
+#IS_UDEV_DIR=$(call test uname -e /etc/udev/rules.d)
+echo 'print: ; @echo "$(VAR)"' | make -f Makefile -f - print
+
+if UDEV
+udevdir=/etc/udev/rules.d
+udev_DATA=60-aeroup.rules
+endif
+