OpenWrt – Blame information for rev 4

Subversion Repositories:
Rev:
Rev Author Line No. Line
4 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 #
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 }