diff --git a/webif/lib/epg.class b/webif/lib/epg.class index 72156cc..5c9420f 100644 --- a/webif/lib/epg.class +++ b/webif/lib/epg.class @@ -186,7 +186,7 @@ epg method get_rsv {} { } epg method process_sched {{debug 0}} { - $self scheduled $debug + $self scheduled $debug } set rsvlookup "" @@ -198,19 +198,21 @@ epg method scheduled {{debug 0}} { set sched_type 0 if {$rsvlookup eq ""} { - set st [clock milliseconds] + set st [clock milliseconds] set rsvlookup [rsv lookuptab] - if {$debug} {puts "mS $([clock milliseconds]-$st) --- $rsvlookup} + if {$debug} { + puts "mS $([clock milliseconds] - $st) --- $rsvlookup" + } } set p 0 foreach key [list \ "$service_id:$event_id" \ - "$channel_hsvc:$event_id" \ + "$channel_hsvc:$event_id" \ [string tolower "$service_id:$channel_crid$series_crid"] \ [string tolower "$channel_crid$series_crid:$channel_crid$event_crid"] \ ] { - if {$debug} {puts "Check key ($key)"} + if {$debug} { puts "Check key ($key)" } if {[dict exists $rsvlookup $key]} { set p $rsvlookup($key) if {$debug} {puts "FOUND ($p)"} @@ -226,30 +228,29 @@ epg method scheduled {{debug 0}} { default { set sched_type 0 } } - if {$debug} {puts "SCHED_TYPE: ($sched_type)"} + if {$debug} { puts "SCHED_TYPE: ($sched_type)" } return $sched_type } -proc {epg update_lookup_tab} {svcid evtid {add true} {type "S"} } { - global rsvlookup - # Update the reservations look up table (if present) with single entry - if {$rsvlookup==""} {return} - set key $svcid:$evtid - if {$add} { - # add new entry - dict set rsvlookup $key $type - } else { - # remove existing entry - if {[dict exists $rsvlookup $key]} { - dict unset rsvlookup $key - } - } - #puts "$svcid:$evtid $add $type == $rsvlookup " +proc {epg update_lookup_tab} {svcid evtid {add true} {type "S"}} { + global rsvlookup + # Update the reservations look up table (if present) with single entry + if {$rsvlookup == ""} return + set key $svcid:$evtid + if {$add} { + # add new entry + dict set rsvlookup $key $type + } else { + # remove existing entry + if {[dict exists $rsvlookup $key]} { + dict unset rsvlookup $key + } + } + #puts "$svcid:$evtid $add $type == $rsvlookup" } - epg method icon_set {{height 0}} { if {$height > 0} { set height "height=$height" } else { set height "" } set icon [$self type_icon] @@ -502,7 +503,7 @@ proc {epg dbfetch} {mode args} { lappend params "%$v%" } append q ") " - } + } -param { lappend params $v } -nocase { append q "collate nocase " } default { error "Invalid option, $arg" } @@ -567,3 +568,4 @@ proc {epg channellist} {{field usLcn}} { return $channels } + diff --git a/webif/lib/rsv.class b/webif/lib/rsv.class index 2066720..f9d95a0 100644 --- a/webif/lib/rsv.class +++ b/webif/lib/rsv.class @@ -312,9 +312,8 @@ rsv method iconset {{height 20}} { return $iconlist } -# source /df rsv method set {ivName val} { - set $ivName $val + set $ivName $val } rsv method setorigstart {o} { @@ -346,77 +345,78 @@ rsv method set_refresh {} { } rsv method update_aul {new_event old_aul} { - # Add new_event (optional) to the aulEventToRecordInfo and szEventToRecord - # remove old_aul (optional) from " " - # Maintain list in time order - set curauls [$self aul] - set ecrids [split $szEventToRecord "|"] - set evtaul {} - set insert 1 - set start 0 - # Do we have new event to add? - if {$new_event != 0 && $new_event !={}} { - set service_id [$new_event get channel_hsvc] - set start [$new_event get start] - set end [$new_event end] - set evtid [$new_event get event_id] - set evtaul [list $service_id $start $end $evtid] - set evtcrid [string toupper "1[$new_event get channel_crid][$new_event get event_crid]"] - set insert 0 - } - # rebuild aul and events list with new event in correct order - lmap aul $curauls ecrid $ecrids { - #puts "$aul $ecrid" - if {$aul == $old_aul} {continue; #remove current entry} - if {$aul == ""} {continue; #null entry} - if {!$insert && $start <= [lindex $aul 1]} { - set insert 1 - lappend newaul $evtaul - append newevnts "$evtcrid|" - } - lappend newaul $aul - append newevnts "$ecrid|" - } - # add to end if not inserted - if {!$insert} { - set insert 1 - lappend newaul $evtaul - append newevnts "$evtcrid|" - } - set action 5 - $self setaul [$self buildaul $newaul] - set szEventToRecord $newevnts - } + # Add new_event (optional) to aulEventToRecordInfo and szEventToRecord + # remove old_aul (optional) from " " + # Maintain list in time order + set curauls [$self aul] + set ecrids [split $szEventToRecord "|"] + set evtaul {} + set insert 1 + set start 0 + # Do we have new event to add? + if {$new_event != 0 && $new_event !={}} { + set service_id [$new_event get channel_hsvc] + set start [$new_event get start] + set end [$new_event end] + set evtid [$new_event get event_id] + set evtaul [list $service_id $start $end $evtid] + set evtcrid [string toupper + "1[$new_event get channel_crid][$new_event get event_crid]"] + set insert 0 + } + # rebuild aul and events list with new event in correct order + lmap aul $curauls ecrid $ecrids { + #puts "$aul $ecrid" + if {$aul == $old_aul} {continue; #remove current entry} + if {$aul == ""} {continue; #null entry} + if {!$insert && $start <= [lindex $aul 1]} { + set insert 1 + lappend newaul $evtaul + append newevnts "$evtcrid|" + } + lappend newaul $aul + append newevnts "$ecrid|" + } + # add to end if not inserted + if {!$insert} { + set insert 1 + lappend newaul $evtaul + append newevnts "$evtcrid|" + } + set action 5 + $self setaul [$self buildaul $newaul] + set szEventToRecord $newevnts +} rsv method set_next_event {} { - # Update reservation next event info in ucVolume - if {[string length $aulEventToRecordInfo] >0} { - binary scan [string range $aulEventToRecordInfo 0 15]\ - iiii service_id start end event_id - set dur $($end-$start) - if {$hsvc != $service_id || - $nsttime != $start || - $nduration != $dur || - $usevtid != $event_id} { - set nduration $dur - set ucVolume "$service_id:$event_id:$start" - } - } else { - # The next event is not yet in the EPG - set time $([clock seconds] - 86400) - set ucVolume "$hsvc:$usLastRecordedEvtId:$time" - } + # Update reservation next event info in ucVolume + if {[string length $aulEventToRecordInfo] >0} { + binary scan [string range $aulEventToRecordInfo 0 15] \ + iiii service_id start end event_id + set dur $($end-$start) + if {$hsvc != $service_id || + $nsttime != $start || + $nduration != $dur || + $usevtid != $event_id} { + set nduration $dur + set ucVolume "$service_id:$event_id:$start" + } + } else { + # The next event is not yet in the EPG + set time $([clock seconds] - 86400) + set ucVolume "$hsvc:$usLastRecordedEvtId:$time" + } } rsv method reset_next_event {} { - # Ensure our copy matches the updated reservation - if {$ucVolume!=0} { - lassign [split $ucVolume ":"] service_id event_id start - set hsvc $service_id - set nsttime $start - set usevtid $event_id - set ucVolume 0 - } + # Ensure our copy matches the updated reservation + if {$ucVolume != 0} { + lassign [split $ucVolume ":"] service_id event_id start + set hsvc $service_id + set nsttime $start + set usevtid $event_id + set ucVolume 0 + } } rsv method set_skip {event} { @@ -554,8 +554,8 @@ rsv method apply_skip {service event} { lassign [epg dbfetch dump -service $service -event $event] epg if {$epg eq ""} { - error "Cannot find event in EPG." - } + error "Cannot find event in EPG." + } $epg get_channel_info # First check to see if there is already a pending skip for this @@ -572,7 +572,7 @@ rsv method apply_skip {service event} { $ev set_skip $epg if {[catch {$ev insert_deferred} msg]} { error "Error during insert." - } + } } rsv method remove_pending {} { @@ -749,7 +749,7 @@ proc {rsv lookuptab} {} { set res [[rsv dbhandle] query " select usSvcId, usevtid, ucCRIDType, szCRID, ucRecKind, aulEventToRecordInfo, - szRecordedProgCrid + szRecordedProgCrid from $tab left join channel.TBL_SVC on $tab.hSvc = channel.TBL_SVC.hSvc where ersvtype <= 3 @@ -772,35 +772,39 @@ proc {rsv lookuptab} {} { continue } - foreach r [split $rec(szRecordedProgCrid) "|"] { - if {$r != {}} { - set records([string tolower "\ - $rec(szCRID):\ - [string range $r 1 end]"]) "R" - } - } + foreach r [split $rec(szRecordedProgCrid) "|"] { + if {$r != {}} { + set records([string tolower "\ + $rec(szCRID):\ + [string range $r 1 end]"]) "R" + } + } - set aul $rec(aulEventToRecordInfo) + set aul $rec(aulEventToRecordInfo) - if {[string length $aul]} { - for {set i 0} {$i < [string length $aul]} {incr i 16} { - binary scan [string range $aul $i $($i + 15)]\ - iiii service start end event_id - set records([\ - string tolower "$service:$event_id"]) $p - } - - } else { - set records([\ - string tolower "$rec(usSvcId):$rec(szCRID)"]) $p - } + if {[string length $aul]} { + for {set i 0} { + $i < [string length $aul]} {incr i 16} { + binary scan [string range \ + $aul $i $($i + 15)] \ + iiii service start end event_id + set records([ + string tolower \ + "$service:$event_id"]) $p + } + } else { + set records([ + string tolower \ + "$rec(usSvcId):$rec(szCRID)"]) $p + } } } - # Add all skipped epsisodes for all series - set skiplist [rsv _skiplist] - foreach skip $skiplist { - set records($skip) "X" - } + + # Add all skipped episodes for all series + set skiplist [rsv _skiplist] + foreach skip $skiplist { + set records($skip) "X" + } return $records } @@ -1224,7 +1228,7 @@ proc {rsv restore} {file} { # Need to fix up the AUL table service IDs too. set newaul "" foreach aul [$rsv aul] { - # {service start end event_id} + # {service start end event_id} lassign $aul ohsvc start end eid if {![dict exists $hsvcmap $ohsvc]} { # Should not happen @@ -1263,7 +1267,7 @@ proc {rsv restore} {file} { puts "Restoring skiplist..." set fields "ulslot state service_id event_id hSvc start - ucCRIDType szCRID szSkipCRID" + ucCRIDType szCRID szSkipCRID" foreach line $data { set vals [lrange [lassign [split $line "\t"] key] 0 end-1] @@ -1718,3 +1722,4 @@ proc {rsv reassert_skips} {{debug false}} { rsv commit } } +