diff options
author | Barattero Laurent <laurent@larueluberlu.net> | 2014-01-21 04:02:33 +0100 |
---|---|---|
committer | Barattero Laurent <laurent@larueluberlu.net> | 2014-01-21 04:02:33 +0100 |
commit | 98f60a7659f12e0474ecd3fed0632a059fb4133f (patch) | |
tree | 8f10736fec6777df15b70230489429d45978cd0f | |
parent | 6ed6128396063cc4d1676d41fb63517eb29162e4 (diff) |
update to version 0.3.0
adds improved driver support for linux
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) @@ -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 ) @@ -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... @@ -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 + |