Google for "idl 12340003" turned up http://dealdatabase.com/forum/showth...t=41852&page=2, and ADH's first message—

Originally Posted by
alldeadhomiez
Right - as I mentioned, software 7.1 has this built into tivosh
—on that page got me to look in /tvlib/, where I found /tvlib/tcl/tv/TvIdl.tcl.
So there's a much easier way to decode these things:
Code:
% tvidl dbtotext 0 {184 50344978 -1602223616 -1164204796
-1476395008 256 1836321280 825309811 3356983 167772161 282
66048 196608 65588 1459945472 5919824 1 1128418830 1717977376
1634298985 25972 1 65544 20 302055424 196660 21797890 12888343
3473408 302120960 196660 21666818 1509363 17432576 58851328
-1476132864 3412480 -1677590525 -421658295 203 263 65792 1
257 66304 -4172542 16777215}
TvNpkChannelDefinition {
idChannel: << not present >>
idGuideSource: "tms:11793"
channelBits: 2586 (0x00000a1a) (*unknown*)
eSourceType: 2 (0x00000002) (CABLE)
channelNumber:
TvBusChannelNumberV2 {
major: 52 (0x0034)
minor: << not present >>
} TvBusChannelNumberV2
strCallSign: "WPTZ"
strLongName: "NBC Affiliate"
strDescription: << not present >>
logo:
TvNpkChannelLogo {
iLogo: 65556 (0x00010014)
iBackupLogo: 0 (0x00000000)
} TvNpkChannelLogo
staleInfo: << not present >>
networkInfo: TvBusAnyStruct
{
TvNpkChannelDefinitionNetworks {
vNetworks: [ TvBusAnyStruct
{
TvNpkChannelDefinitionExternalAnalog {
idTuningSignalSource: 142949396513960 (0x00008203000004a8) {33283/1192}
idOriginatingSignalSource: << not present >>
} TvNpkChannelDefinitionExternalAnalog
}
TvBusAnyStruct
{
TvNpkChannelDefinitionTMS {
eServiceTier: 1 (0x00000001) (BASIC)
fLocalOnly: false
} TvNpkChannelDefinitionTMS
}
]
} TvNpkChannelDefinitionNetworks
}
eGuideProvider: 1 (0x00000001) (TMS)
eConnector: 3 (0x00000003) (COMPOSITE)
idStation: 657237370470399 (0x000255c0ffffffff) {153024/-1}
homeChannelNetworkIndex: << not present >>
} TvNpkChannelDefinition
And for good measure:
Code:
% tvidl struct TvNpkChannelDefinition -info
idChannel {optional {unsigned long long}}
idGuideSource {optional string}
channelBits {optional enum TvNpkChannelBitField}
eSourceType {optional enum TvNpkChannelSignalSourceType}
channelNumber {optional struct TvBusChannelNumberV2}
strCallSign {optional string}
strLongName {optional string}
strDescription {optional string}
logo {optional struct TvNpkChannelLogo}
staleInfo {optional anystruct}
networkInfo {optional anystruct}
eGuideProvider {optional enum TvNpkChannelGuideProvider}
eConnector {optional enum TvNpkInputConnectorType}
idStation {optional {unsigned long long}}
homeChannelNetworkIndex {optional long}
and
Code:
% tvidl enum TvNpkChannelGuideProvider -info
UNKNOWN 0 TMS 1 DIRECTV 2 GEMSTAR 3
So now I can get channel numbers and callsigns in my inserted programmes, as well as logos if they're installed. As a bonus, the NpkChannelDefinition fields I've constructed remove the "Video: Unknown Quality" line; I believe this to be because I set the DIGITAL flag (0x0800) in the TvNpkChannelDefinition/@channelBits field, and so I believe this flag to indicate that the channel is recorded directly as a digital bitstream, rather than from an analogue source.
My guess for the need for an NpkChannelDefinition field in a SeasonPass record is for quick access to the TmsId field, Station record, and SignalSource record.
As for Recording/@AuxiliaryData:
Code:
% tvidl dbtotext 0 {35 50344978 -761593344
-933553663 318767104 251658240 1702060354 1953391981 540168992 16723}
TvDbRecordingNetworkTransferAuxData {
friendlyServiceName: "Basement S2 SA"
} TvDbRecordingNetworkTransferAuxData
Of course, I've also seen dumpobj tell me -prettystructs prints marshalled structures in an unmarshalled
form (-ps) many a time. And what does /tvlib/tcl/tv/dumpobj.tcl have to say about TiVo's marshalling protocol?
Code:
proc FMarshalledStruct { type value } {
# Marshalled structs are represented as int arrays with some special
# characteristics. So first of all the basic type must be int.
if { ($type == "int") } {
# Now we look at the first element in the integer array. It is the
# length, in bytes, of the entire array (minus 5, who knows why?!?),
# if it's a marshalled struct -- ACTUALLY, this turns out not to be
# true, so we don't check for that.
set countVal [lindex $value 0]
set lenVal [llength $value]
# And also, the first value is a special magic number which identifies
# a marshalled struct
if { ([lindex $value 1] == 50344978) } {
return 1
}
}
return 0
}
(The first element appears to be the length, in bytes, of the entire array, minus 4 for the length value, minus the number of padding bytes needed to get the whole thing up to a multiple of 4 bytes. So it should be length_in_bytes - {4..7}.)
Hmmm... maybe they took some fields out of the idl files that describe parts of the MRV metadata transfers. And maybe put some dependencies in, like Recording/@Showing/@Program/@TmsId required to get the Recording/@Showing/@Program/@Description transferred.
To routerplus?
(And lookee what I just found here:
Code:
% tvidl struct TvDbSeasonPass -info
objectName string
dayOfWeekLocal {sequence long}
duration {optional long}
endTimePadding {optional long}
keepTime {optional long}
maxRecordings {optional long}
npkChannelDefinition {sequence struct TvNpkChannelDefinition}
presentationFeature {sequence enum TvDbPresentationFeature}
priority {optional long}
recordingQuality {optional enum TvDbRecordQuality}
series {optional struct TvDbSeries}
showStatus {optional enum TvDbShowStatus}
startTimeLocal {optional long}
startTimePadding {optional long}
station {optional struct TvDbStation}
theme {optional struct TvDbTheme}
type {optional enum TvDbSeasonPassType}
auxiliaryData {optional struct TvBusMarshalledStruct}
logoIndex {optional long}
uiType {optional long}
fUseShowingEndPadding {optional boolean}
So they've at least thought about having Season Passes that spread across multiple channels?)