From d0c1f027450cdf458b94e189627996afb06b5441 Mon Sep 17 00:00:00 2001
From: fherrero <fherrero@iri.upc.edu>
Date: Tue, 2 Jul 2019 09:50:47 +0200
Subject: [PATCH] Add scripts. Add arquitecture to CmakeLists.

---
 CMakeLists.txt                   |  8 +++++
 scripts/debian/postinst          | 18 +++++++++--
 scripts/debian/postrm            |  2 +-
 scripts/debian/prerm             | 16 +++++++++-
 scripts/load_pcspkr.sh           |  2 ++
 scripts/unbind_ftdi_udev.sh      | 52 +++++++++++++++++++++++++++-----
 scripts/undo_load_pcspkr.sh      | 10 ++++++
 scripts/undo_unbind_ftdi_udev.sh | 41 +++++++++++++++++++++++++
 src/CMakeLists.txt               |  6 ++++
 9 files changed, 143 insertions(+), 12 deletions(-)
 mode change 100644 => 100755 scripts/load_pcspkr.sh
 mode change 100644 => 100755 scripts/unbind_ftdi_udev.sh
 create mode 100755 scripts/undo_load_pcspkr.sh
 create mode 100755 scripts/undo_unbind_ftdi_udev.sh

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4e18077..b0f7a95 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 8adecc9..921a467 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 3b846ef..8fa7731 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 d9ff53c..4c61293 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 a441ac4..fb4272b
--- 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 5d36c1e..a3d6012
--- 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 0000000..8507293
--- /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 0000000..5196d08
--- /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 fac59fd..b25620b 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)
-- 
GitLab