diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e18077431125c7d5b7f6ce78c9afe3b3d7be802..b0f7a95c25fbefb753b04d80b9c8715032616d20 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,6 +66,14 @@ ELSE(UNIX) ) ENDIF(UNIX) +IF (CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") + SET (X86 TRUE) + SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "amd64") +ELSE () + SET (X86 FALSE) + SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386") +ENDIF() + IF (UNIX) SET(CPACK_PACKAGE_FILE_NAME "iri-${PACKAGE_NAME}-dev-${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}") SET(CPACK_PACKAGE_NAME "iri-${PACKAGE_NAME}-dev") diff --git a/scripts/debian/postinst b/scripts/debian/postinst index 8adecc986a10fecd41a8370ef255cc0ec0725f61..921a467d32e0de7e215313017854538a9b229b64 100644 --- a/scripts/debian/postinst +++ b/scripts/debian/postinst @@ -2,7 +2,21 @@ set -e case "$1" in configure) - #echo "I'm a postinst script" + echo "Running postinst script" + + # TEST + # echo "pkg name $DPKG_MAINTSCRIPT_PACKAGE" + # echo "pkg files: dpkg -L <pkg_name>" + # dpkg -L $DPKG_MAINTSCRIPT_PACKAGE + # TEST + + /usr/share/iri/battery_monitor/scripts/unbind_ftdi_udev.sh -s A600eB1Y + /usr/share/iri/battery_monitor/scripts/unbind_ftdi_udev.sh -s A600eByq + /usr/share/iri/battery_monitor/scripts/unbind_ftdi_udev.sh -s A900WSG1 + # SERIAL DABO: A600eB1Y + # SERIAL TIBI: A600eByq + # SERIAL TEO: A900WSG1 + /usr/share/iri/battery_monitor/scripts/load_pcspkr.sh ;; abort-upgrade) @@ -14,4 +28,4 @@ case "$1" in ;; esac -exit 0 +exit 0 \ No newline at end of file diff --git a/scripts/debian/postrm b/scripts/debian/postrm index 3b846efe01b88ec4079d8577af7a257bf88a75b9..8fa7731c6f72c62a866dd0e99e2d361a9dc78d1d 100644 --- a/scripts/debian/postrm +++ b/scripts/debian/postrm @@ -2,7 +2,7 @@ set -e case "$1" in remove) - #echo "I'm a postrm script" + # echo "Running postrm script" ;; purge) diff --git a/scripts/debian/prerm b/scripts/debian/prerm index d9ff53c269c84677eeddbc2d7a630ca1f6dcc9ba..4c612937d7cd920e3a8235e83fd76de883de5e3a 100644 --- a/scripts/debian/prerm +++ b/scripts/debian/prerm @@ -2,7 +2,21 @@ set -e case "$1" in remove) - #echo "I'm a prerm script" + echo "Running prerm script" + # TEST + # echo "pkg name $DPKG_MAINTSCRIPT_PACKAGE" + # echo "pkg files: dpkg -L <pkg_name>" + # dpkg -L $DPKG_MAINTSCRIPT_PACKAGE + # TEST + + /usr/share/iri/battery_monitor/scripts/undo_unbind_ftdi_udev.sh -s A600eB1Y + /usr/share/iri/battery_monitor/scripts/undo_unbind_ftdi_udev.sh -s A600eByq + /usr/share/iri/battery_monitor/scripts/undo_unbind_ftdi_udev.sh -s A900WSG1 + # SERIAL DABO: A600eB1Y + # SERIAL TIBI: A600eByq + # SERIAL TEO: A900WSG1 + echo "battery_monitor postrm script: You may want to remove pcspkr from /etc/modules. You can do it by running ./scripts/undo_load_pcspkr.sh" + #/usr/share/iri/battery_monitor/scripts/undo_load_pcspkr.sh ;; upgrade) diff --git a/scripts/load_pcspkr.sh b/scripts/load_pcspkr.sh old mode 100644 new mode 100755 index a441ac41b7fea80b4dabd971ecdb5bbd724bb051..fb4272bf36cdb1f57616f09ee2b4756fd2f2841b --- a/scripts/load_pcspkr.sh +++ b/scripts/load_pcspkr.sh @@ -1,5 +1,7 @@ #!/bin/sh +echo "--- load_pcspkr.sh ---" + echo "Add pcspkr module to /etc/modules so it is loaded on startup" LINE='pcspkr' diff --git a/scripts/unbind_ftdi_udev.sh b/scripts/unbind_ftdi_udev.sh old mode 100644 new mode 100755 index 5d36c1e2ca22dbdccc6cf9ba87952b92d1518a39..a3d60129fc60ee718d6e7d4e81f29bcaccf07aa3 --- a/scripts/unbind_ftdi_udev.sh +++ b/scripts/unbind_ftdi_udev.sh @@ -1,20 +1,56 @@ #!/bin/sh -VENDOR=${1:-0403} -PRODUCT=${2:-6001} -FILE=${3:-99-ftdi.rules} +echo "--- unbind_ftdi_udev.sh ---" + +# VENDOR=${1:-0403} +# PRODUCT=${2:-6001} +# SERIAL=${3:-A600eB1Y} +# FILE=${4:-99-ftdi.rules} + +VENDOR="0403" +PRODUCT="6001" +SERIAL="A600eB1Y" +FILE="99-ftdi.rules" + + # SERIAL DABO: A600eB1Y + # SERIAL TIBI: A600eByq + # SERIAL TEO: A900WSG1 + +usage() { + echo "Usage: $0 [-v <vendor>] [-p <product>] [-s <serial>] [-f <file> ]" + echo " -v specify vendor id. Default 0403" + echo " -p specify product id. Default 6001" + echo " -s specify serial number. Default A600eB1Y" + echo " -f specify udev file. Default 99-ftdi.rules" + exit 1 + } + +while getopts ":hv:p:s:f:" arg; do + case $arg in + v) VENDOR=$OPTARG;; + p) PRODUCT=$OPTARG;; + s) SERIAL=$OPTARG;; + f) FILE=$OPTARG;; + h) usage;; + *) usage;; + esac +done +shift $((OPTIND-1)) -echo "Add udev rule so ${VENDOR}:${PRODUCT} devices do not load ftdi_sio driver" -LINE0="#The following 2 lines make ${VENDOR}:${PRODUCT} devices not load ftdi_sio driver" -LINE1="ATTRS{idVendor}==\"${VENDOR}\", ATTRS{idProduct}==\"${PRODUCT}\", MODE:=\"0666\"" -LINE2=$"ATTRS{idVendor}==\"${VENDOR}\", ATTRS{idProduct}==\"${PRODUCT}\", RUN+=\"/bin/sh -c 'echo \$kernel > /sys/bus/usb/drivers/ftdi_sio/unbind'\"" FILE=/etc/udev/rules.d/$FILE +echo " Add udev rule so VENDOR:PRODUCT:SERIAL=${VENDOR}:${PRODUCT}:${SERIAL} devices do not load ftdi_sio driver." +echo " Adding new lines to udev rule file: ${FILE}" + +LINE0="#The following 2 lines make VENDOR:PRODUCT:SERIAL=${VENDOR}:${PRODUCT}:${SERIAL} devices not load ftdi_sio driver" +LINE1="ATTRS{idVendor}==\"${VENDOR}\", ATTRS{idProduct}==\"${PRODUCT}\", ATTRS{serial}==\"${SERIAL}\", MODE:=\"0666\"" +LINE2="ATTRS{idVendor}==\"${VENDOR}\", ATTRS{idProduct}==\"${PRODUCT}\", ATTRS{serial}==\"${SERIAL}\", RUN+=\"/bin/sh -c 'echo \$kernel > /sys/bus/usb/drivers/ftdi_sio/unbind'\"" + sudo touch $FILE grep -qF -- "$LINE0" "$FILE" || echo "$LINE0" | sudo tee -a "$FILE" > /dev/null grep -qF -- "$LINE1" "$FILE" || echo "$LINE1" | sudo tee -a "$FILE" > /dev/null grep -qF -- "$LINE2" "$FILE" || echo "$LINE2" | sudo tee -a "$FILE" > /dev/null sudo service udev restart -echo "Need to unplug-plug devices for changes to take effect" \ No newline at end of file +echo " Need to unplug-plug devices for changes to take effect" \ No newline at end of file diff --git a/scripts/undo_load_pcspkr.sh b/scripts/undo_load_pcspkr.sh new file mode 100755 index 0000000000000000000000000000000000000000..8507293d43626ccfed68fbd33e98a66e0151c829 --- /dev/null +++ b/scripts/undo_load_pcspkr.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +echo "Remove pcspkr module from /etc/modules" + +LINE="pcspkr" +FILE=/etc/modules + + +sudo sed -i "/$LINE/d" $FILE +sudo rmmod pcspkr \ No newline at end of file diff --git a/scripts/undo_unbind_ftdi_udev.sh b/scripts/undo_unbind_ftdi_udev.sh new file mode 100755 index 0000000000000000000000000000000000000000..5196d080f6f78e4d086d1bc77e505440adb3ac95 --- /dev/null +++ b/scripts/undo_unbind_ftdi_udev.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# SERIAL=${3:-A600eB1Y} +# FILE=${4:-99-ftdi.rules} + +SERIAL="A600eB1Y" +FILE="99-ftdi.rules" + + # SERIAL DABO: A600eB1Y + # SERIAL TIBI: A600eByq + # SERIAL TEO: A900WSG1 + +usage() { + echo "Usage: $0 [-v <vendor>] [-p <product>] [-s <serial>] [-f <file> ]" + echo " -s specify serial number. Default A600eB1Y" + echo " -f specify udev file. Default 99-ftdi.rules" + exit 1 + } + +while getopts ":hv:p:s:f:" arg; do + case $arg in + s) SERIAL=$OPTARG;; + f) FILE=$OPTARG;; + h) usage;; + *) usage;; + esac +done +shift $((OPTIND-1)) + + +FILE=/etc/udev/rules.d/$FILE + +echo "Undo addition of udev rule so VENDOR:PRODUCT:SERIAL=${VENDOR}:${PRODUCT}:${SERIAL} devices do not load ftdi_sio driver." +echo "Removing all lines containing SERIAL=${SERIAL} from file: ${FILE}" + +LINE0=${SERIAL} + +sudo sed -i "/${LINE0}/d" $FILE + +sudo service udev restart +echo "Need to unplug-plug devices for changes to take effect" \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index fac59fd17f547c2a36ea343a0c42f03274ec235f..b25620b820467a4e0b02a0df853c4ce8961016df 100755 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,4 +28,10 @@ INSTALL(TARGETS battery_monitor ARCHIVE DESTINATION lib/iri/${PROJECT_NAME}) INSTALL(FILES ${headers} DESTINATION include/iri/${PROJECT_NAME}) INSTALL(FILES ../Findbattery_monitor.cmake DESTINATION ${CMAKE_ROOT}/Modules/) +INSTALL(FILES ../scripts/unbind_ftdi_udev.sh + ../scripts/load_pcspkr.sh + ../scripts/undo_unbind_ftdi_udev.sh + ../scripts/undo_load_pcspkr.sh + DESTINATION share/iri/${PROJECT_NAME}/scripts + PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ) ADD_SUBDIRECTORY(examples)