summaryrefslogtreecommitdiff
path: root/package/network/config/ltq-vdsl-app/files/dsl_control
blob: f875e3dc7c5e3b77ab6d73ab31812771c50ea1b6 (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
90
91
92
93
#!/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

# G.992.1 Annex A
# G.992.3 Annex A / L-US1 / L_US-2 / M
# G.992.5 Annex A / M
xtse_adsl_a="04 00 04 00 4C 01 04 00"

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

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

xtse_vdsl="00 00 00 00 00 00 00 07"

service_triggers() {
	procd_add_reload_trigger network
}

start_service() {
	local annex
	local firmware
	local xtse
	local xtse_adsl
	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_adsl=\"\${xtse_adsl_$annex}\""
	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 ${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
}