summaryrefslogtreecommitdiff
path: root/openwrt/rhctl
diff options
context:
space:
mode:
Diffstat (limited to 'openwrt/rhctl')
-rw-r--r--openwrt/rhctl/Makefile18
-rwxr-xr-xopenwrt/rhctl/files/luaclient.init112
-rw-r--r--openwrt/rhctl/files/rhctl.config9
3 files changed, 132 insertions, 7 deletions
diff --git a/openwrt/rhctl/Makefile b/openwrt/rhctl/Makefile
index 82fb58e..22bbbd6 100644
--- a/openwrt/rhctl/Makefile
+++ b/openwrt/rhctl/Makefile
@@ -12,13 +12,13 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=rhctl
-PKG_VERSION:=1.0_RC1
+PKG_VERSION:=1.0
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:=5ef6f94450062e0daf7eb2b974ace3cf
+PKG_MD5SUM:=b746704c89869f23537d0d8e7d976357
PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install
@@ -31,7 +31,7 @@ define Package/rhctl
TITLE:=Radio Helsinki control tools
URL:=http://www.helsinki.at
MAINTAINER:=Christian Pointner <equinox@helsinki.at>
- DEPENDS:=+udev udevtrigger
+ DEPENDS:=+liblua +libuci-lua +udev +udevtrigger
endef
define Package/rhctl/conffiles
@@ -40,7 +40,7 @@ endef
define Package/rhctl/description
rhctl is a collection of daemons and tools intended to control the
- main audio switch of Radio Helsinki.
+ main audio switch of Radio Helsinki.
endef
define Build/Configure
@@ -56,12 +56,14 @@ define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) \
TARGET=Linux \
- CFLAGS="$(TARGET_CFLAGS)" \
- LDFLAGS="$(TARGET_LDFLAGS) -ldl"
+ CFLAGS="$(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include" \
+ LDFLAGS="$(TARGET_LDFLAGS) -ldl -lm -lcrypt" \
+ LUA_LDFLAGS="-llua"
$(STRIP) $(PKG_BUILD_DIR)/switchctl
$(STRIP) $(PKG_BUILD_DIR)/serialclient
$(STRIP) $(PKG_BUILD_DIR)/stdioclient
$(STRIP) $(PKG_BUILD_DIR)/heartbeatclient
+ $(STRIP) $(PKG_BUILD_DIR)/luaclient
endef
define Package/rhctl/install
@@ -74,12 +76,16 @@ define Package/rhctl/install
$(INSTALL_BIN) $(PKG_BUILD_DIR)/serialclient $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/stdioclient $(1)/usr/bin/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/heartbeatclient $(1)/usr/bin/
+ $(INSTALL_BIN) $(PKG_BUILD_DIR)/luaclient $(1)/usr/bin/
$(INSTALL_BIN) ./files/rhctlsh $(1)/usr/bin/
+ $(INSTALL_DIR) $(1)/usr/share/rhctl
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/*.lua $(1)/usr/share/rhctl/
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/udev.init $(1)/etc/init.d/udev
$(INSTALL_BIN) ./files/switchctl.init $(1)/etc/init.d/switchctl
$(INSTALL_BIN) ./files/serialclient.init $(1)/etc/init.d/serialclient
$(INSTALL_BIN) ./files/heartbeatclient.init $(1)/etc/init.d/heartbeatclient
+ $(INSTALL_BIN) ./files/luaclient.init $(1)/etc/init.d/luaclient
$(INSTALL_DIR) $(1)/etc/udev/rules.d
$(INSTALL_DATA) ./files/udev.rules $(1)/etc/udev/rules.d/50-rhctl.rules
endef
diff --git a/openwrt/rhctl/files/luaclient.init b/openwrt/rhctl/files/luaclient.init
new file mode 100755
index 0000000..bd0a796
--- /dev/null
+++ b/openwrt/rhctl/files/luaclient.init
@@ -0,0 +1,112 @@
+#!/bin/sh /etc/rc.common
+START=73
+
+BIN=luaclient
+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 "$2" "forced"
+}
+
+foreach_config() {
+ local cfg="$1"
+ local name
+ local option
+ local value
+ local args=""
+ local forced=0
+
+ config_get name "$cfg" "name"
+ if [ -n "$2" ] && [ "x$2" != "x$name" ]; then
+ return
+ fi
+
+ if [ -n "$3" ] && [ "x$3" == "xforced" ]; then
+ forced=1
+ fi
+
+ for option in $CONFIG_OPTIONS
+ do
+ config_get value "$cfg" "$option"
+ if [ "x$option" == "xdisabled" ]; then
+ if [ $forced -eq 0 ] && [ -n "$value" ] && [ $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 "luaclient" "$1"
+ shift
+ done
+ else
+ config_foreach foreach_config "luaclient"
+ 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/rhctl.config b/openwrt/rhctl/files/rhctl.config
index 2e4f176..7d3f06f 100644
--- a/openwrt/rhctl/files/rhctl.config
+++ b/openwrt/rhctl/files/rhctl.config
@@ -31,4 +31,11 @@ config 'heartbeatclient'
option baudrate '38400'
option device '/dev/ttyHeartbeat'
option timeout '15'
- option led 'heartbeat' \ No newline at end of file
+ option led 'heartbeat'
+
+config 'luaclient'
+# option disabled 1
+ option name 'mode-leds'
+ option log 'syslog:3,luaclient-mode-leds,daemon'
+ option command_sock '/var/run/rhctl/switchctl.sock'
+ option lua_file '/usr/share/rhctl/mode-leds.lua'