diff options
author | John Crispin <blogic@openwrt.org> | 2015-07-08 14:25:52 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2015-07-08 14:25:52 +0000 |
commit | ed55318df19155dd36c30bb1761b1137b8c46fb4 (patch) | |
tree | cf0973a2b76fa768fc989b7a4daab3e66f1019e5 /package/base-files/files/etc/init.d/gpio_switch | |
parent | b9f4b02c2846e3dffbce80f9aa7bb930694889b0 (diff) | |
download | master-187ad058-ed55318df19155dd36c30bb1761b1137b8c46fb4.tar.gz master-187ad058-ed55318df19155dd36c30bb1761b1137b8c46fb4.tar.bz2 master-187ad058-ed55318df19155dd36c30bb1761b1137b8c46fb4.zip |
base-files: implemented basic GPIO control
Internal GPIO pins are used for PoE passthrough setups in multi-port
routers. This patch implemnets control over this hardware feature for
Ubiquiti Nanostations and TP-Link CPE510.
Signed-off-by: Lars Kruse <lists@sumpfralle.de>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@46271 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files/files/etc/init.d/gpio_switch')
-rwxr-xr-x | package/base-files/files/etc/init.d/gpio_switch | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/package/base-files/files/etc/init.d/gpio_switch b/package/base-files/files/etc/init.d/gpio_switch new file mode 100755 index 0000000000..1f1b44b212 --- /dev/null +++ b/package/base-files/files/etc/init.d/gpio_switch @@ -0,0 +1,42 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2015 OpenWrt.org + +START=98 +STOP=10 +USE_PROCD=1 + + +load_gpio_switch() +{ + local name + local gpio_pin + local value + + config_get gpio_pin "$1" gpio_pin + config_get name "$1" name + config_get value "$1" value 0 + + local gpio_path="/sys/class/gpio/gpio${gpio_pin}" + # export GPIO pin for access + [ -d "$gpio_path" ] || { + echo "$gpio_pin" >/sys/class/gpio/export + # we need to wait a bit until the GPIO appears + [ -d "$gpio_path" ] || sleep 1 + echo out >"$gpio_path/direction" + } + # write 0 or 1 to the "value" field + { [ "$value" = "0" ] && echo "0" || echo "1"; } >"$gpio_path/value" +} + +service_triggers() +{ + procd_add_reload_trigger "system" +} + +start_service() +{ + [ -e /sys/class/gpio/ ] && { + config_load system + config_foreach load_gpio_switch gpio_switch + } +} |