OpenWrt – Blame information for rev 1

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