diff options
Diffstat (limited to 'io-tool/mts-io-sysfs')
-rwxr-xr-x | io-tool/mts-io-sysfs | 241 |
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 + |