Re: [OpenWrt-Devel] [PATCH 1/2] Initial DSL framework for Lantiq

2012-01-24 Thread John Crispin
applied in r29881

thanks
___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH 1/2] Initial DSL framework for Lantiq

2012-01-23 Thread Stefan Monnier
> and allows you to start and start the daemon.

(with-smartypants-mode "But what if I want to start it instead?")


Stefan

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Re: [OpenWrt-Devel] [PATCH 1/2] Initial DSL framework for Lantiq

2012-01-23 Thread John Crispin
Hi Lee,

> The patch is in two parts, this one contains the non-LuCI bits, the next one 
> provides support for DSL in LuCI with an overview status in the admin_status 
> page and a extra DSL tab on the network admin section which shows similar 
> data and allows you to start and start the daemon.

i will ask jow to look at the luci part and do this patch in the next
2-3 days.

thank you for the patch

John

___
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


[OpenWrt-Devel] [PATCH 1/2] Initial DSL framework for Lantiq

2012-01-23 Thread Lee Essen
Hi,

I think I've got my initial concept for DSL support to a point where it's quite 
functional now and ready for a bit more extensive testing.  I will look at 
netlink as discussed, but I think that will take some time, so I think this 
would serve as a good interim solution (some of it is valid with a netlink 
solution anyway.)

So this proposes a very simple script based framework (which is used by LuCI) 
and provides an implementation for the Lantiq driver.

The patch is in two parts, this one contains the non-LuCI bits, the next one 
provides support for DSL in LuCI with an overview status in the admin_status 
page and a extra DSL tab on the network admin section which shows similar data 
and allows you to start and start the daemon.

So the non-luci bits:

- Removed ifx_cpe_control_init.sh (the old init script)
- Created dsl_control (/etc/init.d)
- tidied up start and stop
- stop calls dsl_notify before killing daemon
- has status and lucistat options to provide detail
- copes with daemon not running situation
- Updated package makefile to use new init script and to build cli support
- Provide a dsl_notify.sh script to cope with line up/down events

The patch is below.

Cheers,

Lee. 


Index: package/ltq-dsl-app/files/dsl_control
===
--- package/ltq-dsl-app/files/dsl_control   (revision 0)
+++ package/ltq-dsl-app/files/dsl_control   (revision 0)
@@ -0,0 +1,280 @@
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2008 OpenWrt.org
+START=99
+
+EXTRA_COMMANDS="status lucistat"
+EXTRA_HELP="   status  Get DSL status information
+   lucistat  Get status information if lua friendly format" 
+
+SERVICE_DAEMONIZE=1
+SERVICE_WRITE_PID=1
+
+#
+# Basic functions to send CLI commands to the dsl_cpe_control daemon
+#
+dsl_cmd() {
+   pkill -0 dsl_cpe_control && (
+   echo "$@" > /tmp/pipe/dsl_cpe0_cmd
+   cat /tmp/pipe/dsl_cpe0_ack
+   )
+}
+dsl_val() {
+   echo $(expr "$1" : '.*'$2'=\([-\.[:alnum:]]*\).*')
+}
+
+#
+# Simple divide by 10 routine to cope with one decimal place
+#
+dbt() {
+   local a=$(expr $1 / 10)
+   local b=$(expr $1 % 10)
+   echo "${a}.${b}"
+}
+#
+# Take a number and convert to k or meg
+#
+scale() {
+   local val=$1
+   local a
+   local b
+   
+   if [ "$val" -gt 100 ]; then
+   a=$(expr $val / 1000)
+   b=$(expr $a % 1000)
+   a=$(expr $a / 1000)
+   printf "%d.%03d Mb" ${a} ${b}
+   elif [ "$val" -gt 1000 ]; then
+   a=$(expr $val / 1000)
+   printf "%d Kb" ${a}
+   else
+   echo "${val} b"
+   fi
+}
+
+#
+# Read the data rates for both directions
+#
+data_rates() {
+   local csg
+   local dru
+   local drd
+   local sdru
+   local sdrd
+   
+   csg=$(dsl_cmd g997csg 0 1)
+   drd=$(dsl_val "$csg" ActualDataRate)
+
+   csg=$(dsl_cmd g997csg 0 0)
+   dru=$(dsl_val "$csg" ActualDataRate)
+
+   [ -z "$drd" ] && drd=0
+   [ -z "$dru" ] && dru=0
+
+   sdrd=$(scale $drd)
+   sdru=$(scale $dru)
+   
+   if [ "$action" = "lucistat" ]; then
+   echo "dsl.data_rate_down=$drd"
+   echo "dsl.data_rate_up=$dru"
+   echo "dsl.data_rate_down_s=\"$sdrd\""
+   echo "dsl.data_rate_up_s=\"$sdru\""
+   else
+   echo "Data Rate:${sdrd}/s / ${sdru}/s"
+   fi
+}
+
+#
+# Chipset
+#
+chipset() {
+   local vig
+   local cs
+   local csv
+
+   vig=$(dsl_cmd vig)
+   cs=$(dsl_val "$vig" DSL_ChipSetType)
+   csv=$(dsl_val "$vig" DSL_ChipSetHWVersion)
+
+   if [ "$action" = "lucistat" ]; then
+   echo "dsl.chipset=\"${cs} ${csv}\""
+   else
+   echo "Chipset:  ${cs} ${csv}"
+   fi
+}
+
+#
+# Work out how long the line has been up
+#
+line_uptime() {
+   local ccsg
+   local et
+   local etr
+   local d
+   local h
+   local m
+   local s
+   local rc=""
+
+   ccsg=$(dsl_cmd pmccsg 0 0 0)
+   et=$(dsl_val "$ccsg" nElapsedTime)
+
+   [ -z "$et" ] && et=0
+
+   if [ "$action" = "lucistat" ]; then
+   echo "dsl.line_uptime=${et}"
+   return
+   fi
+
+   d=$(expr $et / 86400)
+   etr=$(expr $et % 86400)
+   h=$(expr $etr / 3600)
+   etr=$(expr $etr % 3600)
+   m=$(expr $etr / 60)
+   s=$(expr $etr % 60)
+
+
+   [ "${d}${h}${m}${s}" -ne 0 ] && rc="${s}s"
+   [ "${d}${h}${m}" -ne 0 ] && rc="${m}m ${rc}"
+   [ "${d}${h}" -ne 0 ] && rc="${h}h ${rc}"
+   [ "${d}" -ne 0 ] && rc="${d}d ${rc}"
+
+   [ -z "$rc" ] && rc="down"
+   echo "Line Uptime:  ${rc}"
+}
+
+#
+# Get noise and attenuation figures
+#
+line_data() {
+   local lsg
+   local latnu
+   local latnd
+   local snru
+   local snrd
+