Updates to rsv.class and epg.class to support schedchk package
This commit is contained in:
parent
1b5472a141
commit
b99327a562
@ -185,33 +185,35 @@ epg method get_rsv {} {
|
||||
}
|
||||
}
|
||||
|
||||
epg method process_sched {} {
|
||||
$self scheduled
|
||||
epg method process_sched {{debug 0}} {
|
||||
$self scheduled $debug
|
||||
}
|
||||
|
||||
set rsvlookup ""
|
||||
|
||||
epg method scheduled {} {
|
||||
epg method scheduled {{debug 0}} {
|
||||
global rsvlookup
|
||||
|
||||
if {$sched_type >= 0} { return $sched_type }
|
||||
set sched_type 0
|
||||
|
||||
if {$rsvlookup eq ""} {
|
||||
set st [clock milliseconds]
|
||||
set rsvlookup [rsv lookuptab]
|
||||
#puts $rsvlookup
|
||||
if {$debug} {puts "mS $([clock milliseconds]-$st) --- $rsvlookup}
|
||||
}
|
||||
|
||||
set p 0
|
||||
foreach key [list \
|
||||
"$service_id:$event_id" \
|
||||
"$channel_hsvc:$event_id" \
|
||||
[string tolower "$service_id:$channel_crid$series_crid"] \
|
||||
[string tolower "$service_id:$channel_crid$event_crid"] \
|
||||
] {
|
||||
#puts "Check key ($key)"
|
||||
if {$debug} {puts "Check key ($key)"}
|
||||
if {[dict exists $rsvlookup $key]} {
|
||||
set p $rsvlookup($key)
|
||||
#puts "FOUND ($p)"
|
||||
if {$debug} {puts "FOUND ($p)"}
|
||||
break
|
||||
}
|
||||
}
|
||||
@ -219,14 +221,35 @@ epg method scheduled {} {
|
||||
switch $p {
|
||||
S { set sched_type 2 }
|
||||
E { set sched_type 1 }
|
||||
R { set sched_type 3 }
|
||||
X { set sched_type 4 }
|
||||
default { set sched_type 0 }
|
||||
}
|
||||
|
||||
#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 "
|
||||
}
|
||||
|
||||
|
||||
epg method icon_set {{height 0}} {
|
||||
if {$height > 0} { set height "height=$height" } else { set height "" }
|
||||
set icon [$self type_icon]
|
||||
@ -431,9 +454,9 @@ proc {epg dbfetch} {mode args} {
|
||||
"
|
||||
}
|
||||
-crid { append q \
|
||||
"and e.event_crid = '$v' " }
|
||||
"and e.event_crid = '$v' collate nocase " }
|
||||
-scrid { append q \
|
||||
"and e.series_crid = '$v' " }
|
||||
"and e.series_crid = '$v' collate nocase " }
|
||||
-type { append q \
|
||||
"and e.content_code = $v " }
|
||||
-service { append q \
|
||||
|
98
webif/lib/rsv.class
Executable file → Normal file
98
webif/lib/rsv.class
Executable file → Normal file
@ -308,6 +308,11 @@ rsv method iconset {{height 20}} {
|
||||
return $iconlist
|
||||
}
|
||||
|
||||
# source /df
|
||||
rsv method set {ivName val} {
|
||||
set $ivName $val
|
||||
}
|
||||
|
||||
rsv method setorigstart {o} {
|
||||
set _origstart $o
|
||||
}
|
||||
@ -336,6 +341,80 @@ rsv method set_refresh {} {
|
||||
set aulEventToRecordInfo ""
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
rsv method set_skip {event} {
|
||||
set action 5
|
||||
|
||||
@ -665,7 +744,7 @@ proc {rsv lookuptab} {} {
|
||||
foreach tab {tbl_reservation pending} {
|
||||
set res [[rsv dbhandle] query "
|
||||
select usSvcId, usevtid, ucCRIDType, szCRID,
|
||||
ucRecKind
|
||||
ucRecKind, aulEventToRecordInfo
|
||||
from $tab left join channel.TBL_SVC
|
||||
on $tab.hSvc = channel.TBL_SVC.hSvc
|
||||
where ersvtype <= 3
|
||||
@ -687,8 +766,21 @@ proc {rsv lookuptab} {} {
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
set records([\
|
||||
string tolower "$rec(usSvcId):$rec(szCRID)"]) $p
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user