#!/bin/sh /etc/rc.common
# Copyright (C) 2012 OpenWrt.org
-START=99
+# needs to start before the atm layer which starts at 50
+START=48
+USE_PROCD=1
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
-
-. /lib/functions/lantiq_dsl.sh
-XDSL_CTRL=vdsl_cpe_control
+[ -f /lib/functions/lantiq_dsl.sh ] && . /lib/functions/lantiq_dsl.sh
# G.992.1 Annex A
# G.992.2 Annex A
xtse_vdsl="00 00 00 00 00 00 00 07"
-xdsl_scr() {
- val=`echo $2 | sed "s/ / 0x/g"`
- echo "[WaitForConfiguration]={
-#G997XTUSEC_g997xtusecs 0x$val
-}
-
-[WaitForLinkActivate]={
-}
-
-[WaitForRestart]={
-}
-
-[Common]={
-}" > /tmp/$1.scr
+service_triggers() {
+ procd_add_reload_trigger network
}
-# A43
-tone_adsl_a="0x142"
-tone_vdsl_a="0x142"
-
-# A43 + V43
-tone_adsl_av="0x142"
-tone_vdsl_av="0x146"
-
-# B43
-tone_adsl_b="0x1"
-tone_vdsl_b="0x1"
-
-# B43 + V43
-tone_adsl_bv="0x1"
-tone_vdsl_bv="0x5"
-
-lowlevel_cfg() {
- echo "# VRX Low Level Configuration File
-#
-# Parameters must be separated by tabs or spaces.
-# Empty lines and comments will be ignored.
-#
-
-# nFilter
-#
-# NA = -1
-# OFF = 0
-# ISDN = 1
-# POTS = 2
-# POTS_2 = 3
-# POTS_3 = 4
-#
-# (dec)
- -1
-
-# nHsToneGroupMode nHsToneGroup_A nHsToneGroup_V nHsToneGroup_AV
-#
-# NA = -1 NA = -1 see see
-# AUTO = 0 VDSL2_B43 = 0x0001 nHsToneGroup_A nHsToneGroup_A
-# MANUAL = 1 VDSL2_A43 = 0x0002
-# VDSL2_V43 = 0x0004
-# VDSL1_V43P = 0x0008
-# VDSL1_V43I = 0x0010
-# ADSL1_C43 = 0x0020
-# ADSL2_J43 = 0x0040
-# ADSL2_B43C = 0x0080
-# ADSL2_A43C = 0x0100
-#
-# (dec) (hex) (hex) (hex)
- 1 $1 $2 0x0
-
-# nBaseAddr nIrqNum
-#
-# (hex) (dec)
- 0x1e116000 63
-
-# nUtopiaPhyAdr nUtopiaBusWidth nPosPhyParity
-# default(16b) = 0 NA = -1
-# 8-bit = 1 ODD = 0
-# 16-bit = 2
-#
-#
-# (hex) (dec) (dec)
- 0xFF 0 0
-
-# bNtrEnable
-#
-# (dec)
- 0" > /tmp/lowlevel.cfg
-}
-
-start() {
+start_service() {
local annex
local firmware
- local tone
- local tone_adsl
- local tone_vdsl
+ local xtse
local xtse_adsl
local mode
config_load network
- config_get tone dsl tone
config_get annex dsl annex
config_get firmware dsl firmware
config_get xfer_mode dsl xfer_mode
case "${xfer_mode}" in
atm)
- insmod ltq_atm_vr9
+ LOAD=ltq_atm_vr9
+ UNLOAD=ltq_ptm_vr9
mode=1
;;
*)
- insmod ltq_ptm_vr9
+ LOAD=ltq_ptm_vr9
+ UNLOAD=ltq_atm_vr9
mode=2
;;
esac
eval "xtse_adsl=\"\${xtse_adsl_$annex}\""
- [ -z "${xtse_adsl}" ] && xtse_adsl=$xtse_adsl_b
-
- eval "tone_adsl=\"\${tone_adsl_$tone}\""
- [ -z "${tone_adsl}" ] && tone_adsl=$tone_adsl_av
-
- eval "tone_vdsl=\"\${tone_vdsl_$tone}\""
- [ -z "${tone_vdsl}" ] && tone_vdsl=$tone_vdsl_av
-
- [ -z "${firmware}" ] && firmware=vdsl.bin
-
- xdsl_scr adsl "${xtse_adsl}"
- xdsl_scr vdsl "${xtse_vdsl}"
- lowlevel_cfg "${tone_adsl}" "${tone_vdsl}"
-
- service_start /sbin/vdsl_cpe_control \
- -i `echo $xtse_adsl | sed "s/ /_/g"` \
+ if [ "${xtse_adsl}" ]; then
+ xtse=$xtse_adsl
+ else
+ xtse=$xtse_vdsl
+ fi
+
+ [ -z "${firmware}" ] && firmware=/lib/firmware/vdsl.bin
+ [ -f "${firmware}" ] || {
+ echo failed to find $firmware
+ return 1
+ }
+
+ procd_open_instance
+ procd_set_param command /sbin/vdsl_cpe_control_wrapper \
+ -i `echo $xtse | sed "s/ /_/g"` \
-n /sbin/dsl_notify.sh \
- -f /lib/firmware/${firmware} \
- -a /tmp/adsl.scr \
- -A /tmp/vdsl.scr \
- -l /tmp/lowlevel.cfg \
+ -f ${firmware} \
-M ${mode}
+ procd_append_param env "LOAD=$LOAD" "UNLOAD=$UNLOAD"
+ procd_close_instance
}
-stop() {
+stop_service() {
DSL_NOTIFICATION_TYPE="DSL_INTERFACE_STATUS" \
DSL_INTERFACE_STATUS="DOWN" \
/sbin/dsl_notify.sh
-
- service_stop /sbin/vdsl_cpe_control
}