lantiq: remove DSL_ChipSetHWVersion from status information
[openwrt/staging/pepe2k.git] / target / linux / lantiq / base-files / lib / functions / lantiq_dsl.sh
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2012-2014 OpenWrt.org
3
4 if [ "$( which vdsl_cpe_control )" ]; then
5 XDSL_CTRL=vdsl_cpe_control
6 else
7 XDSL_CTRL=dsl_cpe_control
8 fi
9
10 #
11 # Basic functions to send CLI commands to the vdsl_cpe_control daemon
12 #
13 dsl_cmd() {
14 killall -q -0 ${XDSL_CTRL} && (
15 lock /var/lock/dsl_pipe
16 echo "$@" > /tmp/pipe/dsl_cpe0_cmd
17 cat /tmp/pipe/dsl_cpe0_ack
18 lock -u /var/lock/dsl_pipe
19 )
20 }
21 dsl_val() {
22 echo $(expr "$1" : '.*'$2'=\([-\.[:alnum:]]*\).*')
23 }
24 dsl_string() {
25 echo $(expr "$1" : '.*'$2'=(\([A-Z0-9,]*\))')
26 }
27
28 #
29 # Simple divide by 10 routine to cope with one decimal place
30 #
31 dbt() {
32 local a=$(expr $1 / 10)
33 local b=$(expr $1 % 10)
34 echo "${a}.${b#-}"
35 }
36 #
37 # Take a number and convert to k or meg
38 #
39 scale() {
40 local val=$1
41 local a
42 local b
43
44 if [ "$val" -gt 1000000 ]; then
45 a=$(expr $val / 1000)
46 b=$(expr $a % 1000)
47 a=$(expr $a / 1000)
48 printf "%d.%03d Mb" ${a} ${b}
49 elif [ "$val" -gt 1000 ]; then
50 a=$(expr $val / 1000)
51 printf "%d Kb" ${a}
52 else
53 echo "${val} b"
54 fi
55 }
56
57 scale_latency() {
58 local val=$1
59 local a
60 local b
61
62 a=$(expr $val / 100)
63 b=$(expr $val % 100)
64 printf "%d.%d ms" ${a} ${b}
65 }
66
67 #
68 # convert vendorid into human readable form
69 #
70 parse_vendorid() {
71 local val=$1
72 local name
73 local version
74
75 case "$val" in
76 B5,00,41,4C,43,42*)
77 name="Alcatel"
78 version=${val##*B5,00,41,4C,43,42,}
79 ;;
80 B5,00,41,4E,44,56*)
81 name="Analog Devices"
82 version=${val##*B5,00,41,4E,44,56,}
83 ;;
84 B5,00,42,44,43,4D*)
85 name="Broadcom"
86 version=${val##*B5,00,42,44,43,4D,}
87 ;;
88 B5,00,43,45,4E,54*)
89 name="Centillium"
90 version=${val##*B5,00,43,45,4E,54,}
91 ;;
92 B5,00,47,53,50,4E*)
93 name="Globespan"
94 version=${val##*B5,00,47,53,50,4E,}
95 ;;
96 B5,00,49,4B,4E,53*)
97 name="Ikanos"
98 version=${val##*B5,00,49,4B,4E,53,}
99 ;;
100 B5,00,49,46,54,4E*)
101 name="Infineon"
102 version=${val##*B5,00,49,46,54,4E,}
103 ;;
104 B5,00,54,53,54,43*)
105 name="Texas Instruments"
106 version=${val##*B5,00,54,53,54,43,}
107 ;;
108 B5,00,54,4D,4D,42*)
109 name="Thomson MultiMedia Broadband"
110 version=${val##*B5,00,54,4D,4D,42,}
111 ;;
112 B5,00,54,43,54,4E*)
113 name="Trend Chip Technologies"
114 version=${val##*B5,00,54,43,54,4E,}
115 ;;
116 B5,00,53,54,4D,49*)
117 name="ST Micro"
118 version=${val##*B5,00,53,54,4D,49,}
119 ;;
120 esac
121
122 [ -n "$name" ] && {
123 val="$name"
124
125 [ "$version" != "00,00" ] && val="$(printf "%s %d.%d" "$val" 0x${version//,/ 0x})"
126 }
127
128 echo "$val"
129 }
130
131 #
132 # Read the data rates for both directions
133 #
134 data_rates() {
135 local csg
136 local dru
137 local drd
138 local sdru
139 local sdrd
140
141 csg=$(dsl_cmd g997csg 0 1)
142 drd=$(dsl_val "$csg" ActualDataRate)
143
144 csg=$(dsl_cmd g997csg 0 0)
145 dru=$(dsl_val "$csg" ActualDataRate)
146
147 [ -z "$drd" ] && drd=0
148 [ -z "$dru" ] && dru=0
149
150 sdrd=$(scale $drd)
151 sdru=$(scale $dru)
152
153 if [ "$action" = "lucistat" ]; then
154 echo "dsl.data_rate_down=$drd"
155 echo "dsl.data_rate_up=$dru"
156 echo "dsl.data_rate_down_s=\"$sdrd\""
157 echo "dsl.data_rate_up_s=\"$sdru\""
158 else
159 echo "Data Rate: Down: ${sdrd}/s / Up: ${sdru}/s"
160 fi
161 }
162
163 #
164 # Chipset
165 #
166 chipset() {
167 local vig
168 local cs
169
170 vig=$(dsl_cmd vig)
171 cs=$(dsl_val "$vig" DSL_ChipSetType)
172 csfw=$(dsl_val "$vig" DSL_ChipSetFWVersion)
173 csapi=$(dsl_val "$vig" DSL_DriverVersionApi)
174
175 if [ "$action" = "lucistat" ]; then
176 echo "dsl.chipset=\"${cs}\""
177 echo "dsl.firmware_version=\"${csfw}\""
178 echo "dsl.api_version=\"${csapi}\""
179 else
180 echo "Chipset: ${cs}"
181 echo "Firmware Version: ${csfw}"
182 echo "API Version: ${csapi}"
183 fi
184 }
185
186 #
187 # Vendor information
188 #
189 vendor() {
190 local lig
191 local vid
192 local svid
193
194 lig=$(dsl_cmd g997lig 1)
195 vid=$(dsl_string "$lig" G994VendorID)
196 svid=$(dsl_string "$lig" SystemVendorID)
197
198 vid=$(parse_vendorid $vid)
199 svid=$(parse_vendorid $svid)
200
201 if [ "$action" = "lucistat" ]; then
202 echo "dsl.atuc_vendor_id=\"${vid}\""
203 echo "dsl.atuc_system_vendor_id=\"${svid}\""
204 else
205 echo "ATU-C Vendor ID: ${vid}"
206 echo "ATU-C System Vendor ID: ${svid}"
207 fi
208 }
209
210 #
211 # XTSE capabilities
212 #
213 xtse() {
214 local xtusesg
215 local xtse1
216 local xtse2
217 local xtse3
218 local xtse4
219 local xtse5
220 local xtse6
221 local xtse7
222 local xtse8
223
224 local xtse_s=""
225
226 local annex_s=""
227 local line_mode_s=""
228 local vector_s=""
229
230 local dsmsg=""
231 local cmd=""
232
233 xtusesg=$(dsl_cmd g997xtusesg)
234 xtse1=$(dsl_val "$xtusesg" XTSE1)
235 xtse2=$(dsl_val "$xtusesg" XTSE2)
236 xtse3=$(dsl_val "$xtusesg" XTSE3)
237 xtse4=$(dsl_val "$xtusesg" XTSE4)
238 xtse5=$(dsl_val "$xtusesg" XTSE5)
239 xtse6=$(dsl_val "$xtusesg" XTSE6)
240 xtse7=$(dsl_val "$xtusesg" XTSE7)
241 xtse8=$(dsl_val "$xtusesg" XTSE8)
242
243 # Evaluate Annex (according to G.997.1, 7.3.1.1.1)
244 if [ $((xtse1 & 13)) != 0 \
245 -o $((xtse2 & 1)) != 0 \
246 -o $((xtse3 & 12)) != 0 \
247 -o $((xtse4 & 3)) != 0 \
248 -o $((xtse6 & 3)) != 0 \
249 -o $((xtse8 & 1)) != 0 ]; then
250 annex_s=" A,"
251 fi
252
253 if [ $((xtse1 & 48)) != 0 \
254 -o $((xtse2 & 2)) != 0 \
255 -o $((xtse3 & 48)) != 0 \
256 -o $((xtse6 & 12)) != 0 \
257 -o $((xtse8 & 2)) != 0 ]; then
258 annex_s="$annex_s B,"
259 fi
260
261 if [ $((xtse1 & 194)) != 0 \
262 -o $((xtse2 & 12)) != 0 \
263 -o $((xtse8 & 4)) != 0 ]; then
264 annex_s="$annex_s C,"
265 fi
266
267 if [ $((xtse4 & 48)) != 0 \
268 -o $((xtse5 & 3)) != 0 \
269 -o $((xtse6 & 192)) != 0 ]; then
270 annex_s="$annex_s I,"
271 fi
272
273 if [ $((xtse4 & 192)) != 0 \
274 -o $((xtse7 & 3)) != 0 ]; then
275 annex_s="$annex_s J,"
276 fi
277
278 if [ $((xtse5 & 60)) != 0 ]; then
279 annex_s="$annex_s L,"
280 fi
281
282 if [ $((xtse5 & 192)) != 0 \
283 -o $((xtse7 & 12)) != 0 ]; then
284 annex_s="$annex_s M,"
285 fi
286
287 annex_s=`echo ${annex_s:1}`
288 annex_s=`echo ${annex_s%?}`
289
290 # Evaluate Line Mode (according to G.997.1, 7.3.1.1.1)
291
292 # Regional standard: ANSI T1.413
293 if [ $((xtse1 & 1)) != 0 ]; then
294 line_mode_s=" T1.413,"
295 fi
296
297 # Regional standard: TS 101 388
298 if [ $((xtse1 & 1)) != 0 ]; then
299 line_mode_s="$line_mode_s TS 101 388,"
300 fi
301
302 if [ $((xtse1 & 252)) != 0 ]; then
303 line_mode_s="$line_mode_s G.992.1 (ADSL),"
304 fi
305
306 if [ $((xtse2 & 15)) != 0 ]; then
307 line_mode_s="$line_mode_s G.992.2 (ADSL lite),"
308 fi
309
310 if [ $((xtse3 & 60)) != 0 \
311 -o $((xtse4 & 240)) != 0 \
312 -o $((xtse5 & 252)) != 0 ]; then
313 line_mode_s="$line_mode_s G.992.3 (ADSL2),"
314 fi
315
316 if [ $((xtse4 & 3)) != 0 \
317 -o $((xtse5 & 3)) != 0 ]; then
318 line_mode_s="$line_mode_s G.992.4 (ADSL2 lite),"
319 fi
320
321 if [ $((xtse6 & 199)) != 0 \
322 -o $((xtse7 & 15)) != 0 ]; then
323 line_mode_s="$line_mode_s G.992.5 (ADSL2+),"
324 fi
325
326 if [ $((xtse8 & 7)) != 0 ]; then
327 dsmsg=$(dsl_cmd dsmsg)
328 vector_s=$(dsl_val "$dsmsg" eVectorStatus)
329
330 case "$vector_s" in
331 "0") line_mode_s="$line_mode_s G.993.2 (VDSL2)," ;;
332 "1") line_mode_s="$line_mode_s G.993.5 (VDSL2 with downstream vectoring)," ;;
333 "2") line_mode_s="$line_mode_s G.993.5 (VDSL2 with down- and upstream vectoring)," ;;
334 *) line_mode_s="$line_mode_s unknown," ;;
335 esac
336 fi
337
338 #!!! PROPRIETARY & INTERMEDIATE USE !!!
339 if [ $((xtse8 & 128)) != 0 ]; then
340 line_mode_s="$line_mode_s G.993.1 (VDSL),"
341 fi
342
343 line_mode_s=`echo ${line_mode_s:1}`
344 line_mode_s=`echo ${line_mode_s%?}`
345
346 xtse_s="${xtse1}, ${xtse2}, ${xtse3}, ${xtse4}, ${xtse5}, ${xtse6}, ${xtse7}, ${xtse8}"
347
348 if [ "$action" = "lucistat" ]; then
349 echo "dsl.xtse1=${xtse1:-nil}"
350 echo "dsl.xtse2=${xtse2:-nil}"
351 echo "dsl.xtse3=${xtse3:-nil}"
352 echo "dsl.xtse4=${xtse4:-nil}"
353 echo "dsl.xtse5=${xtse5:-nil}"
354 echo "dsl.xtse6=${xtse6:-nil}"
355 echo "dsl.xtse7=${xtse7:-nil}"
356 echo "dsl.xtse8=${xtse8:-nil}"
357 echo "dsl.xtse_s=\"$xtse_s\""
358 echo "dsl.annex_s=\"${annex_s}\""
359 echo "dsl.line_mode_s=\"${line_mode_s}\""
360 else
361 echo "XTSE Capabilities: ${xtse_s}"
362 echo "Annex: ${annex_s}"
363 echo "Line Mode: ${line_mode_s}"
364 fi
365 }
366
367 #
368 # Power Management Mode
369 #
370 power_mode() {
371 local pmsg=$(dsl_cmd g997pmsg)
372 local pm=$(dsl_val "$pmsg" nPowerManagementStatus);
373 local s;
374
375 case "$pm" in
376 "-1") s="Power management state is not available" ;;
377 "0") s="L0 - Synchronized" ;;
378 "1") s="L1 - Power Down Data transmission (G.992.2)" ;;
379 "2") s="L2 - Power Down Data transmission (G.992.3 and G.992.4)" ;;
380 "3") s="L3 - No power" ;;
381 *) s="unknown" ;;
382 esac
383
384 if [ "$action" = "lucistat" ]; then
385 echo "dsl.power_mode_num=${pm:-nil}"
386 echo "dsl.power_mode_s=\"$s\""
387 else
388 echo "Power Management Mode: $s"
389 fi
390 }
391
392 #
393 # Latency type (interleave delay)
394 #
395 latency_delay() {
396 local csg
397
398 local idu
399 local idu_s;
400 local sidu
401
402 local idd
403 local idd_s;
404 local sidd
405
406 csg=$(dsl_cmd g997csg 0 1)
407 idd=$(dsl_val "$csg" ActualInterleaveDelay)
408
409 csg=$(dsl_cmd g997csg 0 0)
410 idu=$(dsl_val "$csg" ActualInterleaveDelay)
411
412 [ -z "$idd" ] && idd=0
413 [ -z "$idu" ] && idu=0
414
415 if [ "$idd" -gt 100 ]; then
416 idd_s="Interleave"
417 else
418 idd_s="Fast"
419 fi
420
421 if [ "$idu" -gt 100 ]; then
422 idu_s="Interleave"
423 else
424 idu_s="Fast"
425 fi
426
427 sidu=$(scale_latency $idu)
428 sidd=$(scale_latency $idd)
429
430 if [ "$action" = "lucistat" ]; then
431 echo "dsl.latency_num_down=\"$sidd\""
432 echo "dsl.latency_num_up=\"$sidu\""
433 echo "dsl.latency_s_down=\"$idd_s\""
434 echo "dsl.latency_s_up=\"$idu_s\""
435 else
436 echo "Latency [Interleave Delay]: ${sidd} [${idd_s}] ${sidu} [${idu_s}]"
437 fi
438 }
439
440 #
441 # Errors
442 #
443 errors() {
444 local lsctg
445 local dpctg
446 local ccsg
447 local esf
448 local esn
449 local sesf
450 local sesn
451 local lossf
452 local lossn
453 local uasf
454 local uasn
455
456 local crc_pf
457 local crc_pn
458 local crcp_pf
459 local crcp_pn
460 local hecf
461 local hecn
462
463 local fecn
464 local fecf
465
466 lsctg=$(dsl_cmd pmlsctg 1)
467 esf=$(dsl_val "$lsctg" nES)
468 sesf=$(dsl_val "$lsctg" nSES)
469 lossf=$(dsl_val "$lsctg" nLOSS)
470 uasf=$(dsl_val "$lsctg" nUAS)
471
472 lsctg=$(dsl_cmd pmlsctg 0)
473 esn=$(dsl_val "$lsctg" nES)
474 sesn=$(dsl_val "$lsctg" nSES)
475 lossn=$(dsl_val "$lsctg" nLOSS)
476 uasn=$(dsl_val "$lsctg" nUAS)
477
478 dpctg=$(dsl_cmd pmdpctg 0 1)
479 hecf=$(dsl_val "$dpctg" nHEC)
480 crc_pf=$(dsl_val "$dpctg" nCRC_P)
481 crcp_pf=$(dsl_val "$dpctg" nCRCP_P)
482
483 dpctg=$(dsl_cmd pmdpctg 0 0)
484 hecn=$(dsl_val "$dpctg" nHEC)
485 crc_pn=$(dsl_val "$dpctg" nCRC_P)
486 crcp_pn=$(dsl_val "$dpctg" nCRCP_P)
487
488 ccsg=$(dsl_cmd pmccsg 0 1 0)
489 fecf=$(dsl_val "$ccsg" nFEC)
490
491 ccsg=$(dsl_cmd pmccsg 0 0 0)
492 fecn=$(dsl_val "$ccsg" nFEC)
493
494 if [ "$action" = "lucistat" ]; then
495 echo "dsl.errors_fec_near=${fecn:-nil}"
496 echo "dsl.errors_fec_far=${fecf:-nil}"
497 echo "dsl.errors_es_near=${esn:-nil}"
498 echo "dsl.errors_es_far=${esf:-nil}"
499 echo "dsl.errors_ses_near=${sesn:-nil}"
500 echo "dsl.errors_ses_far=${sesf:-nil}"
501 echo "dsl.errors_loss_near=${lossn:-nil}"
502 echo "dsl.errors_loss_far=${lossf:-nil}"
503 echo "dsl.errors_uas_near=${uasn:-nil}"
504 echo "dsl.errors_uas_far=${uasf:-nil}"
505 echo "dsl.errors_hec_near=${hecn:-nil}"
506 echo "dsl.errors_hec_far=${hecf:-nil}"
507 echo "dsl.errors_crc_p_near=${crc_pn:-nil}"
508 echo "dsl.errors_crc_p_far=${crc_pf:-nil}"
509 echo "dsl.errors_crcp_p_near=${crcp_pn:-nil}"
510 echo "dsl.errors_crcp_p_far=${crcp_pf:-nil}"
511 else
512 echo "Forward Error Correction Seconds (FECS): Near: ${fecn} / Far: ${fecf}"
513 echo "Errored seconds (ES): Near: ${esn} / Far: ${esf}"
514 echo "Severely Errored Seconds (SES): Near: ${sesn} / Far: ${sesf}"
515 echo "Loss of Signal Seconds (LOSS): Near: ${lossn} / Far: ${lossf}"
516 echo "Unavailable Seconds (UAS): Near: ${uasn} / Far: ${uasf}"
517 echo "Header Error Code Errors (HEC): Near: ${hecn} / Far: ${hecf}"
518 echo "Non Pre-emtive CRC errors (CRC_P): Near: ${crc_pn} / Far: ${crc_pf}"
519 echo "Pre-emtive CRC errors (CRCP_P): Near: ${crcp_pn} / Far: ${crcp_pf}"
520 fi
521 }
522
523 #
524 # Work out how long the line has been up
525 #
526 line_uptime() {
527 local ccsg
528 local et
529 local etr
530 local d
531 local h
532 local m
533 local s
534 local rc=""
535
536 ccsg=$(dsl_cmd pmccsg 0 0 0)
537 et=$(dsl_val "$ccsg" nElapsedTime)
538
539 [ -z "$et" ] && et=0
540
541 d=$(expr $et / 86400)
542 etr=$(expr $et % 86400)
543 h=$(expr $etr / 3600)
544 etr=$(expr $etr % 3600)
545 m=$(expr $etr / 60)
546 s=$(expr $etr % 60)
547
548
549 [ "${d}${h}${m}${s}" -ne 0 ] && rc="${s}s"
550 [ "${d}${h}${m}" -ne 0 ] && rc="${m}m ${rc}"
551 [ "${d}${h}" -ne 0 ] && rc="${h}h ${rc}"
552 [ "${d}" -ne 0 ] && rc="${d}d ${rc}"
553
554 [ -z "$rc" ] && rc="down"
555
556
557 if [ "$action" = "lucistat" ]; then
558 echo "dsl.line_uptime=${et}"
559 echo "dsl.line_uptime_s=\"${rc}\""
560 else
561
562 echo "Line Uptime Seconds: ${et}"
563 echo "Line Uptime: ${rc}"
564 fi
565 }
566
567 #
568 # Get noise and attenuation figures
569 #
570 line_data() {
571 local lsg
572 local latnu
573 local latnd
574 local satnu
575 local satnd
576 local snru
577 local snrd
578 local attndru
579 local attndrd
580 local sattndru
581 local sattndrd
582 local actatpu
583 local actatpd
584
585 lsg=$(dsl_cmd g997lsg 1 1)
586 latnd=$(dsl_val "$lsg" LATN)
587 satnd=$(dsl_val "$lsg" SATN)
588 snrd=$(dsl_val "$lsg" SNR)
589 attndrd=$(dsl_val "$lsg" ATTNDR)
590 actatpd=$(dsl_val "$lsg" ACTATP)
591
592 lsg=$(dsl_cmd g997lsg 0 1)
593 latnu=$(dsl_val "$lsg" LATN)
594 satnu=$(dsl_val "$lsg" SATN)
595 snru=$(dsl_val "$lsg" SNR)
596 attndru=$(dsl_val "$lsg" ATTNDR)
597 actatpu=$(dsl_val "$lsg" ACTATP)
598
599 [ -z "$latnd" ] && latnd=0
600 [ -z "$latnu" ] && latnu=0
601 [ -z "$satnd" ] && satnd=0
602 [ -z "$satnu" ] && satnu=0
603 [ -z "$snrd" ] && snrd=0
604 [ -z "$snru" ] && snru=0
605 [ -z "$actatpd" ] && actatpd=0
606 [ -z "$actatpu" ] && actatpu=0
607
608 latnd=$(dbt $latnd)
609 latnu=$(dbt $latnu)
610 satnd=$(dbt $satnd)
611 satnu=$(dbt $satnu)
612 snrd=$(dbt $snrd)
613 snru=$(dbt $snru)
614 actatpd=$(dbt $actatpd)
615 actatpu=$(dbt $actatpu)
616
617 [ -z "$attndrd" ] && attndrd=0
618 [ -z "$attndru" ] && attndru=0
619
620 sattndrd=$(scale $attndrd)
621 sattndru=$(scale $attndru)
622
623 if [ "$action" = "lucistat" ]; then
624 echo "dsl.line_attenuation_down=\"$latnd\""
625 echo "dsl.line_attenuation_up=\"$latnu\""
626 echo "dsl.noise_margin_down=\"$snrd\""
627 echo "dsl.noise_margin_up=\"$snru\""
628 echo "dsl.signal_attenuation_down=\"$satnd\""
629 echo "dsl.signal_attenuation_up=\"$satnu\""
630 echo "dsl.actatp_down=\"$actatpd\""
631 echo "dsl.actatp_up=\"$actatpu\""
632 echo "dsl.max_data_rate_down=$attndrd"
633 echo "dsl.max_data_rate_up=$attndru"
634 echo "dsl.max_data_rate_down_s=\"$sattndrd\""
635 echo "dsl.max_data_rate_up_s=\"$sattndru\""
636 else
637 echo "Line Attenuation (LATN): Down: ${latnd} dB / Up: ${latnu} dB"
638 echo "Signal Attenuation (SATN): Down: ${satnd} dB / Up: ${satnu} dB"
639 echo "Noise Margin (SNR): Down: ${snrd} dB / Up: ${snru} dB"
640 echo "Aggregate Transmit Power (ACTATP): Down: ${actatpd} dB / Up: ${actatpu} dB"
641 echo "Max. Attainable Data Rate (ATTNDR): Down: ${sattndrd}/s / Up: ${sattndru}/s"
642 fi
643 }
644
645 #
646 # Is the line up? Or what state is it in?
647 #
648 line_state() {
649 local lsg=$(dsl_cmd lsg)
650 local ls=$(dsl_val "$lsg" nLineState);
651 local s;
652
653 case "$ls" in
654 "0x0") s="not initialized" ;;
655 "0x1") s="exception" ;;
656 "0x10") s="not updated" ;;
657 "0xff") s="idle request" ;;
658 "0x100") s="idle" ;;
659 "0x1ff") s="silent request" ;;
660 "0x200") s="silent" ;;
661 "0x300") s="handshake" ;;
662 "0x380") s="full_init" ;;
663 "0x400") s="discovery" ;;
664 "0x500") s="training" ;;
665 "0x600") s="analysis" ;;
666 "0x700") s="exchange" ;;
667 "0x800") s="showtime_no_sync" ;;
668 "0x801") s="showtime_tc_sync" ;;
669 "0x900") s="fastretrain" ;;
670 "0xa00") s="lowpower_l2" ;;
671 "0xb00") s="loopdiagnostic active" ;;
672 "0xb10") s="loopdiagnostic data exchange" ;;
673 "0xb20") s="loopdiagnostic data request" ;;
674 "0xc00") s="loopdiagnostic complete" ;;
675 "0x1000000") s="test" ;;
676 "0xd00") s="resync" ;;
677 "0x3c0") s="short init entry" ;;
678 "") s="not running daemon"; ls="0xfff" ;;
679 *) s="unknown" ;;
680 esac
681
682 if [ "$action" = "lucistat" ]; then
683 echo "dsl.line_state_num=$ls"
684 echo "dsl.line_state_detail=\"$s\""
685 if [ "$ls" = "0x801" ]; then
686 echo "dsl.line_state=\"UP\""
687 else
688 echo "dsl.line_state=\"DOWN\""
689 fi
690 else
691 if [ "$ls" = "0x801" ]; then
692 echo "Line State: UP [$ls: $s]"
693 else
694 echo "Line State: DOWN [$ls: $s]"
695 fi
696 fi
697 }
698
699 #
700 # Which profile is used?
701 #
702 profile() {
703 local bpstg=$(dsl_cmd bpstg)
704 local profile=$(dsl_val "$bpstg" nProfile);
705 local s;
706
707 case "$profile" in
708 "0") s="8a" ;;
709 "1") s="8b" ;;
710 "2") s="8c" ;;
711 "3") s="8d" ;;
712 "4") s="12a" ;;
713 "5") s="12b" ;;
714 "6") s="17a" ;;
715 "7") s="30a" ;;
716 "8") s="17b" ;;
717 "") s="";;
718 *) s="unknown" ;;
719 esac
720
721 if [ "$action" = "lucistat" ]; then
722 echo "dsl.profile=${profile:-nil}"
723 echo "dsl.profile_s=\"${s}\""
724 else
725 echo "Profile: $s"
726 fi
727 }
728
729 status() {
730 vendor
731 chipset
732 xtse
733 profile
734 line_state
735 errors
736 power_mode
737 latency_delay
738 data_rates
739 line_data
740 line_uptime
741 }
742
743 lucistat() {
744 echo "local dsl={}"
745 status
746 echo "return dsl"
747 }