diff options
Diffstat (limited to 'openwrt/rhctl')
-rw-r--r-- | openwrt/rhctl/Makefile | 9 | ||||
-rw-r--r-- | openwrt/rhctl/files/rhctl.config | 25 | ||||
-rw-r--r-- | openwrt/rhctl/files/serialclient.init | 108 | ||||
-rwxr-xr-x | openwrt/rhctl/files/switchctl.init | 60 |
4 files changed, 182 insertions, 20 deletions
diff --git a/openwrt/rhctl/Makefile b/openwrt/rhctl/Makefile index c5e7fca..80430cf 100644 --- a/openwrt/rhctl/Makefile +++ b/openwrt/rhctl/Makefile @@ -18,7 +18,7 @@ PKG_RELEASE:=1 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=http://localhost/ -PKG_MD5SUM:=1336f063117440c040663025110bf612 +PKG_MD5SUM:=2e5fb8d8a6b075bcc8dde214a6d924e5 PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install @@ -27,7 +27,7 @@ include $(INCLUDE_DIR)/package.mk define Package/rhctl SECTION:=utils CATEGORY:=Utilities - TITLE:=radio helsinki control tools + TITLE:=Radio Helsinki control tools URL:=http://www.helsinki.at MAINTAINER:=Christian Pointner <equinox@helsinki.at> DEPENDS:=+socat @@ -58,16 +58,21 @@ define Build/Compile CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS) -ldl" $(STRIP) $(PKG_BUILD_DIR)/switchctl + $(STRIP) $(PKG_BUILD_DIR)/serialclient endef define Package/rhctl/install $(INSTALL_DIR) $(1)/etc/rhctl $(INSTALL_DATA) ./files/switchctl.conf $(1)/etc/rhctl/ + $(INSTALL_DIR) $(1)/etc/config + $(INSTALL_DATA) ./files/rhctl.config $(1)/etc/config/rhctl $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/switchctl $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/serialclient $(1)/usr/bin/ $(INSTALL_BIN) ./files/rhctlsh $(1)/usr/bin/ $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) ./files/switchctl.init $(1)/etc/init.d/switchctl + $(INSTALL_BIN) ./files/serialclient.init $(1)/etc/init.d/serialclient endef $(eval $(call BuildPackage,rhctl)) diff --git a/openwrt/rhctl/files/rhctl.config b/openwrt/rhctl/files/rhctl.config new file mode 100644 index 0000000..79f5ce3 --- /dev/null +++ b/openwrt/rhctl/files/rhctl.config @@ -0,0 +1,25 @@ +config 'switchctl' + option command_sock '/var/run/rhctl/switchctl.sock' + option baudrate '19200' + option device '/dev/audioswatch' + option config '/etc/rhctl/switchctl.conf' + option mode 'master' + option channel 'main' + +config 'serialclient' +# option disabled 1 + option name 'master' + option log 'syslog:3,serialclient-master,daemon' + option command_sock '/var/run/rhctl/switchctl.sock' + option baudrate '38400' + option device '/dev/ttyUSB0' + option type 'master' + +config 'serialclient' +# option disabled 1 + option name 'standby' + option log 'syslog:3,serialclient-standby,daemon' + option command_sock '/var/run/rhctl/switchctl.sock' + option baudrate '38400' + option device '/dev/ttyUSB1' + option type 'standby' diff --git a/openwrt/rhctl/files/serialclient.init b/openwrt/rhctl/files/serialclient.init new file mode 100644 index 0000000..d869d25 --- /dev/null +++ b/openwrt/rhctl/files/serialclient.init @@ -0,0 +1,108 @@ +#!/bin/sh /etc/rc.common +START=71 + +BIN=serialclient +DAEMON=/usr/bin/$BIN +DESC=$BIN +RUN_D=/var/run/rhctl + + +option_cb() { + local varname="$1" + local value="$2" + + if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then + CONFIG_OPTIONS="$CONFIG_OPTIONS $varname " + fi +} + +foreach_config_forced() { + foreach_config $1 "forced" +} + +foreach_config() { + local cfg="$1" + local name + local option + local value + local args="" + local forced=0 + + if [ -n "$2" ] && [ "x$2" == "xforced" ]; then + forced=1 + fi + + config_get name "serialclient" "name" + for option in $CONFIG_OPTIONS + do + config_get value "serialclient" "$option" + if [ "x$option" == "xdisabled" ]; then + if [ $forced -eq 0 ] && [ $value -eq 1 ]; then + echo -n " $name(disabled)" + return + fi + continue + fi + + if [ "x$option" == "xname" ]; then + continue + fi + + option=`echo $option | tr '_' '-'` + if [ -n "$value" ]; then + args="$args --$option $value" + fi + done + echo -n " $name" + local status="OK" + $DAEMON --write-pid "$RUN_D/$BIN.$name.pid" $args || status="failed" + echo -n "($status)" +} + +stop_client() { + local name=$1 + local pidfile=$RUN_D/$BIN.$name.pid + echo -n " $name" + local status="OK" + if [ ! -f "$pidfile" ]; then + status="tunnel not active" + else + kill `cat $pidfile` > /dev/null 2>&1 || status="failed" + rm -f $pidfile + fi + echo -n "($status)" +} + +start() { + echo -n "Starting $DESC:" + config_load "rhctl" + if [ $# -gt 0 ]; then + while [ $# -gt 0 ]; do + config_foreach foreach_config_forced "$1" + shift + done + else + config_foreach foreach_config "" + fi + echo "." +} + +stop() { + echo -n "Stopping $DESC:" + local name + local pidfile + + if [ $# -gt 0 ]; then + while [ $# -gt 0 ]; do + stop_client $1 + shift + done + else + for pidfile in `ls $RUN_D/$BIN.*.pid 2> /dev/null`; do + name=${pidfile%%.pid} + name=${name##$RUN_D/$BIN.} + stop_client $name + done + fi + echo "." +} diff --git a/openwrt/rhctl/files/switchctl.init b/openwrt/rhctl/files/switchctl.init index 8ebe46f..c947e40 100755 --- a/openwrt/rhctl/files/switchctl.init +++ b/openwrt/rhctl/files/switchctl.init @@ -7,26 +7,50 @@ DESC=$BIN RUN_D=/var/run/rhctl PIDFILE=$RUN_D/$BIN.pid -start() { - echo -n "Starting $DESC:" - mkdir -p $RUN_D - $DAEMON --write-pid $PIDFILE - if [ $? -ne 0 ]; then - echo -n " Error" - else - echo -n " Ok" + +option_cb() { + local varname="$1" + local value="$2" + + if ! echo "$CONFIG_OPTIONS" | grep " $varname " > /dev/null; then + CONFIG_OPTIONS="$CONFIG_OPTIONS $varname " + fi +} + +start_daemon() { + local option + local value + local args="" + + for option in $CONFIG_OPTIONS + do + config_get value "switchctl" "$option" + option=`echo $option | tr '_' '-'` + if [ -n "$value" ]; then + args="$args --$option $value" fi - echo "." + done + local status="OK" + $DAEMON --write-pid $PIDFILE $args || status="failed" + echo -n "($status)" +} + +start() { + echo -n "Starting $DESC:" + config_load "rhctl" + mkdir -p $RUN_D + config_foreach start_daemon "switchctl" + echo "." } stop() { - echo -n "Stopping $DESC:" - if [ -f $PIDFILE ]; then - kill `cat $PIDFILE` > /dev/null 2>&1 - rm -f $PIDFILE > /dev/null 2>&1 - echo -n " Ok" - else - echo -n " not running" - fi - echo "." + echo -n "Stopping $DESC:" + if [ -f $PIDFILE ]; then + kill `cat $PIDFILE` > /dev/null 2>&1 + rm -f $PIDFILE > /dev/null 2>&1 + echo -n " Ok" + else + echo -n " not running" + fi + echo "." } |