soloscli: allow user to apply settings to solos h/w before bringing up network (patch...
authorFelix Fietkau <nbd@openwrt.org>
Sun, 13 Feb 2011 02:52:49 +0000 (02:52 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 13 Feb 2011 02:52:49 +0000 (02:52 +0000)
If the network/wan configuration contains "solos0" ... "solos3" then this list of strings will be applied to the FPGA when the hardware is hotplug added.

The syntax should be "tag=value", as per the values enumerated in the solos-attr.c list.

In the canned example, the modem is temporarily turned off, told to detect noise, told to disable annexes M and A (effectively putting it into pure ADSL mode), and re-activated.

There's probably a more appropriate function name than "dialog" but that's what I came up with.

Handle other ATM hardware (Eagle, etc) besides solos-pci.

SVN-Revision: 25510

package/soloscli/Makefile
package/soloscli/files/etc/hotplug.d/atm/15-solos-init [new file with mode: 0644]
package/soloscli/files/etc/uci-default/solos [new file with mode: 0644]

index 611dbcc08fbc1726be031306ef8ded7ad98e1fc0..1c2d998090d3c117f73fff398c20cdbdf442d1a8 100644 (file)
@@ -37,6 +37,8 @@ endef
 define Package/soloscli/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/soloscli/soloscli $(1)/usr/bin/
+       $(INSTALL_DIR) $(1)/etc/hotplug.d/atm
+       $(INSTALL_DATA) ./files/etc/hotplug.d/atm/15-solos-init $(1)/etc/hotplug.d/atm/
 endef
 
 $(eval $(call BuildPackage,soloscli))
diff --git a/package/soloscli/files/etc/hotplug.d/atm/15-solos-init b/package/soloscli/files/etc/hotplug.d/atm/15-solos-init
new file mode 100644 (file)
index 0000000..36d13ea
--- /dev/null
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+dialog() {
+       local tag="$(echo "$1" | cut -d= -f1)"
+       local value="$(echo "$1" | cut -d= -f2-)"
+       local response
+       
+       response="$(soloscli -s "$port" "$tag" "$value")"
+       [ $? -ne 0 ] && {
+               logger "soloscli($port): $tag '$value' returns $response"
+       }
+}
+
+if [ "$ACTION" = "add" ]; then
+       include /lib/network
+       scan_interfaces
+
+       case $DEVICENAME in
+       solos-pci[0-3])
+               port="${DEVICENAME#solos-pci}"
+               device="solos${port}"
+
+               config_list_foreach wan "$device" dialog
+               ;;
+       esac
+fi
diff --git a/package/soloscli/files/etc/uci-default/solos b/package/soloscli/files/etc/uci-default/solos
new file mode 100644 (file)
index 0000000..7f69da6
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+uci batch <<__EOF__
+
+delete network.wan.solos0
+
+add_list network.wan.solos0="ActivateLine=Abort"
+add_list network.wan.solos0="Retrain=EnableAll"
+add_list network.wan.solos0="DetectNoise=Enable"
+add_list network.wan.solos0="BisMCapability=Disable"
+add_list network.wan.solos0="BisACapability=Disable"
+add_list network.wan.solos0="ActivateLine=Start"
+
+commit network
+__EOF__