From 3558cfb46c2019697b12e449f3a42e00a84bf1a3 Mon Sep 17 00:00:00 2001 From: James Meyer <james.meyer@operamail.com> Date: Thu, 11 Oct 2012 09:44:17 -0500 Subject: LinHES-system: more work with change_channel.sh This version uses getops instead of position based. -d delay -c channel -n transmitter # -s key to send after the channel, like Enter --- abs/core/LinHES-system/PKGBUILD | 4 +- abs/core/LinHES-system/change_channel.sh | 205 ++++++++++++++++++++++--------- 2 files changed, 152 insertions(+), 57 deletions(-) diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD index dc31936..ef6bf08 100755 --- a/abs/core/LinHES-system/PKGBUILD +++ b/abs/core/LinHES-system/PKGBUILD @@ -1,6 +1,6 @@ pkgname=LinHES-system pkgver=2 -pkgrel=117 +pkgrel=118 arch=('i686' 'x86_64') MVDIR=$startdir/pkg/usr/LH BINDIR=$startdir/pkg/usr/bin @@ -110,7 +110,7 @@ md5sums=('5bd4938cf41b63787aa4cdfd76423e09' '45f46d1f9193c8dde18e56369ec29a1e' 'a8edbe7bc37e9932e8749d9f5f89c16f' '116b0f62ed4e8dd6e437930deeb6e49e' - 'd173f98728e436a5180f56e888c2bf91' + '0ca244610ab1f68f70a8af0ddefee277' 'bacc813b48bafcc6fe906e5969930501' 'eb879fee9603a05d5420d4ce8ed9e450' 'f1870a9522c79e6b248fcbf81dec3280' diff --git a/abs/core/LinHES-system/change_channel.sh b/abs/core/LinHES-system/change_channel.sh index 819076a..3337785 100755 --- a/abs/core/LinHES-system/change_channel.sh +++ b/abs/core/LinHES-system/change_channel.sh @@ -1,71 +1,166 @@ -#!/bin/sh +#!/bin/bash # Maintained by CommandIR Support mini at commandir.com - Comments / Suggestions Welcome. # Modified for LinHES specifics -echo $@ > /tmp/change_channel.log -if [ $# -lt 2 ] -then - echo "IR Control Script for LIRC V2.0 -Includes support for CommandIR transmitter selection and lockfile. -The remote codes will be specific to the transmitter number and matched via /etc/systemconfig -Usage: -$0 TRANSMITTER_NUM (CHANNEL_NUMBER | IR_COMMAND) [DELAY] - -Sends an IR command or sequence of numbers using REMOTE_NAME via emitter -TRANSMITTER_NUM. DELAY (in seconds) is waited between sending IR commands. - -Example: Change to channel 123 using emitter 2 with a 0.3s pause between digits: -$0 1 123 .3 - -" - exit 1 -fi - -if [ $# -eq 3 ] -then - DELAY=$3 -else - DELAY=.2 -fi +echo $@ > /tmp/change_channel.log . /etc/systemconfig - - LOCKFILE=/tmp/lirclock export PATH=/bin:/usr/bin:/usr/local/bin -TRANSMITTER=$1 -#get remote name from system config -tname="HostTransmitproto_$TRANSMITTER" -REMOTE_NAME=${!tname} -if [ x$REMOTE_NAME = "xnone" ] -then - echo "Please define Transmitters in /etc/systemconfig" - exit 1 -fi -cmd="$2" +function change_channel() { + touch $LOCKFILE + irsend SET_TRANSMITTERS $TRANSMITTER + sleep .15 + case $cmd in + [0-9]*) + for digit in $(echo $cmd | sed -e 's/./& /g') + do + irsend SEND_ONCE $REMOTE_NAME $digit + sleep $DELAY + done + if [ x$SENDKEY != "x" ] + then + irsend SEND_ONCE $REMOTE_NAME $SENDKEY + fi + + ;; + + *) + irsend SEND_ONCE $REMOTE_NAME $cmd + ;; + esac +} + +function showhelp(){ + echo "IR Control Script for LIRC + Includes support for CommandIR transmitter selection and lockfile. + The remote codes will be specific to the transmitter number and matched via /etc/systemconfig + Usage: + $0 -d delay -c channel -n transmitter_number -s Enter + + -d delay in tenths of a seconds - + -c channel or cmd + -n transmitter_number + -s Key to send after executing change channel command (optional) + + Sends an IR command or sequence of numbers using via emitter TRANSMITTER_NUM. + DELAY ( in 10th of seconds) is waited between sending IR commands. + + Example: Change to channel 123 using emitter 2 with a 0.3s pause between digits: + $0 -n1 -c123 -d3 + + " + exit 1 + + +} + +function testvars() { + if [ x$DELAY = "x" ] + then + tdelay="HostTransmitDelay_$TRANSMITTER" + d=${!tdelay} + DELAY=$(echo "scale=2; $d / 10" | bc) + fi + + + if [ x$cmd = "x" ] + then + echo "-c is mandatory" + exit 1 + fi + + + if [ x$TRANSMITTER = "x" ] + then + echo "-n is mandatory" + exit 1 + fi + echo "delay is $DELAY" + + +# echo "channel or button name is $cmd" +# echo "Using transmitter $TRANSMITTER" +# echo "Remote name is $REMOTE_NAME" +# echo "Will send key $SENDKEY after numbers" +} + + +#-----------------------------Main Program----------------------- + +while getopts ":d:c:n:hs:" opt; do + case $opt in + h) showhelp + ;; + d) DELAY=$(echo "scale=2; $OPTARG / 10" | bc) + ;; + + c) cmd=$OPTARG + ;; + + n) TRANSMITTER=$OPTARG + tname="HostTransmitproto_$TRANSMITTER" + REMOTE_NAME=${!tname} + if [ x$REMOTE_NAME = "xnone" ] + then + echo "Please define Transmitters in /etc/systemconfig" + exit 1 + fi + if [ x$REMOTE_NAME = "x" ] + then + echo "Please define Transmitters in /etc/systemconfig" + exit 1 + fi + + ;; + + s) SENDKEY=$OPTARG + ;; + + \?) + echo + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + :) + echo + echo "Option -$OPTARG requires an argument." >&2 + exit 1 + ;; + esac +done + +testvars while [ -f $LOCKFILE ] do - echo "Waiting for change channel lock file..." - sleep .1 + echo "Waiting for change channel lock file..." + sleep .1 done -touch $LOCKFILE +change_channel +rm -f /tmp/lirclock + + + + + + + + + + + + + + + + + + + + -irsend SET_TRANSMITTERS $TRANSMITTER -sleep .15 -case $cmd in - [0-9]*) - for digit in $(echo $2 | sed -e 's/./& /g'); do - irsend SEND_ONCE $REMOTE_NAME $digit - sleep $DELAY - done - ;; - *) - irsend SEND_ONCE $REMOTE_NAME $cmd - ;; -esac -rm -f /tmp/lirclock \ No newline at end of file -- cgit v0.12