summaryrefslogtreecommitdiff
path: root/package/network/config/ltq-vdsl-app/files/dsl_control
blob: f6275a082080f917ce9c2148d7678ac352fd0543 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#!/bin/sh /etc/rc.common
# Copyright (C) 2012 OpenWrt.org

# 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"

[ -f /lib/functions/lantiq_dsl.sh ] && . /lib/functions/lantiq_dsl.sh

#
# ITU-T G.997.1 (06/2012) - Section 7.3.1.1.1 (xTU transmission system enabling (XTSE))
#
# G.992.1 Annex A
# G.992.3 Annex A / L-US1 / L_US-2 / M
# G.992.5 Annex A / M
# G.993.2 Annex A/B/C
xtse_xdsl_a="04_00_04_00_4C_01_04_07"

# G.992.1 Annex B
# G.992.3 Annex B
# G.992.5 Annex B
# G.993.2 Annex A/B/C
xtse_adsl_b="10_00_10_00_00_04_00_07"

# G.992.1 Annex B
# G.992.3 Annex B
# G.992.3 Annex J
# G.992.5 Annex B
# G.992.5 Annex J
# G.993.2 Annex A/B/C
xtse_adsl_j="10_00_10_40_00_04_01_07"

service_triggers() {
	procd_add_reload_trigger network
}

start_service() {
	local annex
	local firmware
	local xtse
	local mode

	config_load network
	config_get annex dsl annex
	config_get firmware dsl firmware
	config_get xfer_mode dsl xfer_mode

	[ -z "${xfer_mode}" ] && xfer_mode=ptm

	case "${xfer_mode}" in
	atm)
		LOAD=ltq_atm_vr9
		UNLOAD=ltq_ptm_vr9
		mode=1
		;;
	*)
		LOAD=ltq_ptm_vr9
		UNLOAD=ltq_atm_vr9
		mode=2
		;;
	esac

	eval "xtse=\"\${xtse_xdsl_$annex}\""

	[ -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$xtse \
			-n /sbin/dsl_notify.sh \
			-f ${firmware} \
			-M ${mode}
	procd_append_param env "LOAD=$LOAD" "UNLOAD=$UNLOAD"
	procd_close_instance
}

stop_service() {
	DSL_NOTIFICATION_TYPE="DSL_INTERFACE_STATUS" \
	DSL_INTERFACE_STATUS="DOWN" \
		/sbin/dsl_notify.sh
}