summaryrefslogtreecommitdiff
path: root/io-tool/mts-io-sysfs
diff options
context:
space:
mode:
Diffstat (limited to 'io-tool/mts-io-sysfs')
-rwxr-xr-xio-tool/mts-io-sysfs241
1 files changed, 241 insertions, 0 deletions
diff --git a/io-tool/mts-io-sysfs b/io-tool/mts-io-sysfs
new file mode 100755
index 0000000..b32b005
--- /dev/null
+++ b/io-tool/mts-io-sysfs
@@ -0,0 +1,241 @@
+#!/usr/bin/env bash
+#
+# vim: set sw=2 ts=2 expandtab:
+#
+# Copyright (C) 2010 by Multi-Tech Systems
+#
+# Author: James Maki <jmaki@multitech.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+PATH=${PATH}:.
+
+source /usr/lib/mts-io-sysfs/mts-io-sysfs-inc.sh
+
+trap "exit_handler" EXIT
+exit_handler() {
+ local exit_code=$?
+ if [ ${exit_code} -ne 0 ]; then
+ log_error "exiting with ${exit_code}"
+ fi
+}
+
+reset_short_handler() {
+ echo "reset short signal received"
+}
+reset_long_handler() {
+ echo "reset long signal received"
+}
+RESET_SHORT_CMD="reset_short_handler"
+RESET_LONG_CMD="reset_long_handler"
+RESET_SHORT_SIGNAL=$(kill -l SIGUSR1)
+RESET_LONG_SIGNAL=$(kill -l SIGUSR2)
+
+PROGRAM=$(basename $0)
+VERSION="0.0.2"
+
+print_version() {
+ printf "${PROGRAM} ${VERSION}\n"
+ printf "Copyright (C) 2010 by Multi-Tech Systems\n"
+cat <<EOF
+This program is free software; you may redistribute it under the terms of
+the GNU General Public License version 2 or (at your option) any later version.
+This program has absolutely no warranty.
+EOF
+}
+
+usage() {
+ local out=1
+ if [ $# -eq 1 ]; then
+ out=${1}
+ fi
+
+ printf "Usage: ${PROGRAM} [ OPTIONS ] OBJECT [--] [ ARGUMENTS ]\n" >&${out}
+ printf "where OBJECT := {\n" >&${out}
+ printf " show SHOW-NAME |\n" >&${out}
+ printf " store STORE-NAME { value } |\n" >&${out}
+ printf " reset-monitor-trap [short-cmd cmd signame] [long-cmd cmd signame]\n" >&${out}
+ printf " }\n" >&${out}
+ printf "\n" >&${out}
+ printf " SHOW-NAME := {\n" >&${out}
+ printf " board-temperature |\n" >&${out}
+ printf " eth0-enabled |\n" >&${out}
+ printf " extserial-dcd |\n" >&${out}
+ printf " extserial-ri |\n" >&${out}
+ printf " led-cd |\n" >&${out}
+ printf " led-sdk-b |\n" >&${out}
+ printf " led-sig1 |\n" >&${out}
+ printf " led-sdk-c |\n" >&${out}
+ printf " led-sig2 |\n" >&${out}
+ printf " led-sdk-d |\n" >&${out}
+ printf " led-sig3 |\n" >&${out}
+ printf " led-sdk-e |\n" >&${out}
+if [ "${MTS_IO_CONTROLS_STATUS_LED}" = "true" ]; then
+ printf " led-status |\n" >&${out}
+ printf " led-sdk-a |\n" >&${out}
+fi
+if [ "${MTS_IO_CONTROLS_LS_LED}" = "true" ]; then
+ printf " led-ls |\n" >&${out}
+fi
+ printf " radio-reset |\n" >&${out}
+ printf " reset |\n" >&${out}
+ printf " reset-monitor\n" >&${out}
+ printf " }\n" >&${out}
+ printf "\n" >&${out}
+ printf " STORE-NAME := {\n" >&${out}
+ printf " eth0-enabled BOOLEAN |\n" >&${out}
+ printf " extserial-dcd BOOLEAN |\n" >&${out}
+ printf " extserial-ri BOOLEAN |\n" >&${out}
+ printf " led-cd BOOLEAN |\n" >&${out}
+ printf " led-sdk-b BOOLEAN |\n" >&${out}
+ printf " led-sig1 BOOLEAN |\n" >&${out}
+ printf " led-sdk-c BOOLEAN |\n" >&${out}
+ printf " led-sig2 BOOLEAN |\n" >&${out}
+ printf " led-sdk-d BOOLEAN |\n" >&${out}
+ printf " led-sig3 BOOLEAN |\n" >&${out}
+ printf " led-sdk-e BOOLEAN |\n" >&${out}
+if [ "${MTS_IO_CONTROLS_STATUS_LED}" = "true" ]; then
+ printf " led-status LED-VALUE |\n" >&${out}
+ printf " led-sdk-a LED-VALUE |\n" >&${out}
+fi
+if [ "${MTS_IO_CONTROLS_LS_LED}" = "true" ]; then
+ printf " led-ls BOOLEAN |\n" >&${out}
+fi
+ printf " radio-reset { 0 } |\n" >&${out}
+ printf " reset-monitor { pid short-signal long-signal }\n" >&${out}
+ printf " }\n" >&${out}
+ printf "\n" >&${out}
+ printf " OPTIONS := {\n" >&${out}
+ printf " --verbose\n" >&${out}
+ printf " }\n" >&${out}
+ printf "\n" >&${out}
+ printf " BOOLEAN := { OFF | ON }\n" >&${out}
+ printf " LED-VALUE := { OFF | ON | LED-FLASHING }\n" >&${out}
+ printf " OFF := 0\n" >&${out}
+ printf " ON := 1\n" >&${out}
+ printf " LED-FLASHING := 2\n" >&${out}
+ printf "\n" >&${out}
+}
+
+ARGS=$(getopt -o "" --long verbose,version,help -n $0 -- "$@")
+if [ $? != 0 ]; then
+ usage 2
+ exit 1
+fi
+eval set -- "${ARGS}"
+
+while true; do
+ case "$1" in
+ --version)
+ print_version
+ exit 0
+ shift
+ ;;
+
+ --help)
+ usage 1
+ exit 0
+ shift
+ ;;
+
+ --verbose)
+ VERBOSE=true
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ usage 2
+ exit 1
+ ;;
+ esac
+done
+
+if [ $# -lt 1 ]; then
+ usage 2
+ exit 1
+fi
+
+cmd=${1}
+shift
+
+case "${cmd}" in
+show)
+ show "$@"
+ ;;
+store)
+ store "$@"
+ ;;
+show-trigger)
+ show_trigger "$@"
+ ;;
+store-trigger)
+ store_trigger "$@"
+ ;;
+reset-monitor-trap)
+ while true; do
+ if [ $# -eq 0 ]; then
+ break
+ fi
+
+ if [ $# -ne 3 ]; then
+ usage 2
+ exit 1
+ fi
+
+ case "${1}" in
+ short-cmd)
+ RESET_SHORT_CMD=${2}
+ RESET_SHORT_SIGNAL=$(kill -l ${3})
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ ;;
+ long-cmd)
+ RESET_LONG_CMD=${2}
+ RESET_LONG_SIGNAL=$(kill -l ${3})
+ if [ $? -ne 0 ]; then
+ exit 1
+ fi
+ ;;
+ *)
+ usage 2
+ exit 1
+ ;;
+ esac
+
+ shift; shift; shift
+ done
+
+ trap "${RESET_SHORT_CMD}" ${RESET_SHORT_SIGNAL}
+ trap "${RESET_LONG_CMD}" ${RESET_LONG_SIGNAL}
+
+ store reset-monitor "$$ ${RESET_SHORT_SIGNAL} ${RESET_LONG_SIGNAL}"
+
+ while true; do
+ sleep 1
+ done
+ ;;
+*)
+ usage 2
+ exit 1
+ ;;
+esac
+
+exit 0
+