webif/webif/html/diag/mux.jim

161 lines
3.4 KiB
Tcl
Executable File

#!/mod/bin/jimsh
package require cgi
package require sqlite3
source /mod/webif/lib/setup
require altrow progressbar epg.class system.class pkg.class
header
if {[catch {set db [sqlite3.open /var/lib/humaxtv/channel.db]} msg]} {
puts "Error opening channel database: $msg"
exit
}
pkg loadmuxdb
proc f2c {frequency} {
return $(int((($frequency / 1000) - 303.25) / 8))
}
proc svc2mux {svcid mux} {
return [switch $($svcid / 4096) {
1 { format "PSB1/BBC A" }
2 { format "PSB2/D3&4" }
4 { format "PSB3/BBC B" }
3 { format "COM4/SDN" }
5 { format "COM5/ARQ A" }
6 { format "COM6/ARQ B" }
10 { format "COM7/ARQ C" }
default { format $mux }
}]
}
puts "
<div class=va>
<img class=va src=/img/aerials.png height=50>
&nbsp;
Tuned Multiplex Information
</div>
<button id=expandall>Expand All</button>
<button id=collapseall>Collapse All</button>
<br><br>
<table class=borders>
<tr>
<th>Channel</th>
<th>Frequency</th>
<th>Signal Strength</th>
<th>Signal Quality</th>
<th>Network</th>
<th>Mux</th>
<th>Type</th>
<th>Channels</th>
<th>&gt;799</th>
</tr>
"
foreach tw [$db query {
select tsIdx, szNetName, usTsID, ulFrequency, ucLevel,
ucQuality, eTransMode, eConstellation, eSystem
from TBL_TS join TBL_NET using (netIdx)
order by ulFrequency
}] {
lassign $tw \
x tsIdx x netName x usTsID x ulFrequency x ucLevel x ucQuality \
x eTransMode x eConstellation x eSystem
puts "
<tr class=odd>
<td>[f2c $ulFrequency]</td>
<td>[expr {$ulFrequency / 1000.0}] MHz</td>
"
puts "<td>[progressbar $ucLevel]</td>"
puts "<td>[progressbar $ucQuality]</td>"
puts "<td>[system strip $netName]</td>"
set channels [$db query {
select usLcn, szSvcName, usSvcId, szPrvName, aucDefaultAuthority
from TBL_SVC left join TBL_PRV using (prvIdx)
where tsIdx = %s
order by usLcn
} $tsIdx]
if {$eConstellation == 1} {
set mux "Local"
} else {
set mux "Unknown"
}
if {[llength $channels] != 0} {
set chan [lindex $channels 0]
lassign $chan x lcn x name x svcid
set mux [svc2mux $svcid $mux]
}
set ehs 0
foreach chan $channels {
lassign $chan x lcn
if {$lcn >= 800} { incr ehs }
}
puts "<td>$mux</td>"
if {$eSystem == 0} {
puts "<td>DVB-T (SD;$eTransMode)</td>"
} else {
puts "<td class=blood>DVB-T2 (HD;$eTransMode)</td>"
}
puts "<td>[llength $channels]
<a class=mchan ts=$tsIdx href=#>
<img border=0 height=14
src=/images/421_1_00_CH_Title_2R_Arrow.png>
view
</a></td>"
puts "<td>$ehs</td>"
puts "</tr>"
puts "<tr id=mchan_$tsIdx class=mchan style=\"display: none\">
<td colspan=9>"
puts "<table style=\"margin-left: 5em\">"
puts "<tr>
<th colspan=3>Channel</th>
<th>Provider</th>
<th>Authority</th>
</tr>"
altrow reset
foreach chan $channels {
lassign $chan x lcn x name x svcid x prv x auth
set name [system strip $name]
set prv [system strip $prv]
altrow
puts "
<td class=va>[epg channelicon $name 50]</td>
<td>$lcn</td><td>$name</td>
<td>$prv</td>
<td>$auth</td>
</tr>
"
}
puts "</table>"
puts "</td></tr>"
}
puts "</table>"
puts {
<script type=text/javascript>
$(document).ready(function() {
$('a.mchan').click(function(e) {
e.preventDefault();
$('#mchan_' + $(this).attr('ts')).slideToggle('slow');
});
$('#expandall').button().click(function() {
$('tr.mchan').slideDown('slow');
});
$('#collapseall').button().click(function() {
$('tr.mchan').slideUp('slow');
});
});
</script>
}
footer