#!/usr/bin/env bash # # vim: set sw=2 ts=2 expandtab: # # Copyright (C) 2010 by Multi-Tech Systems # # Author: James Maki # # 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 <&${out} printf "where OBJECT := {\n" >&${out} printf " show SHOW-NAME |\n" >&${out} printf " store STORE-NAME |\n" >&${out} printf " }\n" >&${out} printf "\n" >&${out} printf " SHOW-NAME := {\n" >&${out} printf " board-temperature |\n" >&${out} printf " radio-reset |\n" >&${out} printf " eth0-enabled |\n" >&${out} printf " rsersrc |\n" >&${out} printf " extserial-dcd |\n" >&${out} printf " extserial-dtr |\n" >&${out} printf " gpio11 |\n" >&${out} printf " gpio12 |\n" >&${out} printf " led1 |\n" >&${out} printf " led2 |\n" >&${out} printf " led3 |\n" >&${out} printf " led4 |\n" >&${out} printf " led5 |\n" >&${out} printf " led6 |\n" >&${out} printf " gpi5 |\n" >&${out} printf " gpi6 |\n" >&${out} printf " gpi7 |\n" >&${out} printf " gpi8 |\n" >&${out} printf " gpi9 |\n" >&${out} printf " gpi10 |\n" >&${out} printf " gpo1 |\n" >&${out} printf " gpo2 |\n" >&${out} printf " gpo3 |\n" >&${out} printf " gpo4 |\n" >&${out} printf " adc{0-3} |\n" >&${out} printf " }\n" >&${out} printf "\n" >&${out} printf " STORE-NAME := {\n" >&${out} printf " radio-reset { 0 } |\n" >&${out} printf " rsersrc BOOLEAN |\n" >&${out} printf " eth0-enabled BOOLEAN |\n" >&${out} printf " extserial-dcd BOOLEAN |\n" >&${out} printf " gpio11 BOOLEAN |\n" >&${out} printf " gpio12 BOOLEAN |\n" >&${out} printf " led1 BOOLEAN |\n" >&${out} printf " led2 BOOLEAN |\n" >&${out} printf " led4 BOOLEAN |\n" >&${out} printf " led5 BOOLEAN |\n" >&${out} printf " led6 BOOLEAN |\n" >&${out} printf " gpo1 BOOLEAN |\n" >&${out} printf " gpo2 BOOLEAN |\n" >&${out} printf " gpo3 BOOLEAN |\n" >&${out} printf " gpo4 BOOLEAN |\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 " OFF := 0\n" >&${out} printf " ON := 1\n" >&${out} printf "\n" >&${out} else printf "Usage: ${PROGRAM} [ OPTIONS ] OBJECT [--] [ ARGUMENTS ]\n" >&${out} printf "where OBJECT := {\n" >&${out} printf " show SHOW-NAME |\n" >&${out} printf " store STORE-NAME |\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 " radio-reset |\n" >&${out} printf " eth0-enabled |\n" >&${out} printf " extserial-dcd |\n" >&${out} printf " extserial-ri |\n" >&${out} printf " extserial-dsr |\n" >&${out} printf " extserial-dtr |\n" >&${out} if [ "${MTS_IO_CONTROLS_STATUS_LED}" = "true" ]; then printf " led-status |\n" >&${out} printf " led-sdk-a |\n" >&${out} fi 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} printf " led-dtr |\n" >&${out} printf " led-sdk-f |\n" >&${out} if [ "${MTS_IO_CONTROLS_LS_LED}" = "true" ]; then printf " led-ls |\n" >&${out} fi printf " din{0-7} |\n" >&${out} printf " dout{0-7} |\n" >&${out} printf " adc{0-3} |\n" >&${out} printf " reset |\n" >&${out} printf " reset-monitor\n" >&${out} printf " }\n" >&${out} printf "\n" >&${out} printf " STORE-NAME := {\n" >&${out} printf " radio-reset { 0 } |\n" >&${out} printf " eth0-enabled BOOLEAN |\n" >&${out} printf " extserial-dcd BOOLEAN |\n" >&${out} printf " extserial-ri BOOLEAN |\n" >&${out} printf " extserial-dsr 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 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} printf " led-dtr BOOLEAN |\n" >&${out} printf " led-sdk-f BOOLEAN |\n" >&${out} if [ "${MTS_IO_CONTROLS_LS_LED}" = "true" ]; then printf " led-ls BOOLEAN |\n" >&${out} fi printf " dout{0-7} BOOLEAN |\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} fi #if GPIO11_FILE exist } 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