SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/usr/bin/perl | |
| 2 | ||
| 3 | use strict; | |
| 4 | use warnings; | |
| 5 | use Data::Dumper; | |
| 6 | use DateTime; | |
| 7 | use Date::Calc qw(Delta_Days); | |
| 8 | use bignum; | |
| 9 | ||
| 10 | # READ BYTE | |
| 11 | sub rb {
| |
| 12 | my ($FH, $len) = @_; | |
| 13 | read($FH, my $b, $len ? $len : 1); | |
| 14 | unpack("W*", $b);
| |
| 15 | } | |
| 16 | ||
| 17 | # READ INT | |
| 18 | sub ri {
| |
| 19 | my $FH = shift; | |
| 20 | read($FH, my $i, 4); | |
| 21 | unpack("I", $i);
| |
| 22 | } | |
| 23 | ||
| 24 | sub rs {
| |
| 25 | my $FH = shift; | |
| 26 | read($FH, my $i, 2); | |
| 27 | unpack("s", $i);
| |
| 28 | } | |
| 29 | ||
| 30 | sub rbs {
| |
| 31 | my $FH = shift; | |
| 32 | my @arr = (rb($FH), rb($FH)); | |
| 33 | my ($value, $i) = (0, 0); | |
| 34 | #print "----\n"; | |
| 35 | foreach(@arr) {
| |
| 36 | #print $_."<-hva\n"; | |
| 37 | - | #while(1) {
|
| 37 | + | $value += ($_ & 0xff) << (8 * $i); |
| 38 | - | my $tunerType = rb($CHANDAT) || 0; |
| 38 | + | $i++; |
| 39 | - | my $channelGroup = rb($CHANDAT); |
| 39 | + | } |
| 40 | - | my $satModulationSystem = rb($CHANDAT); |
| 40 | + | return $value; |
| 41 | - | my $flags = rb($CHANDAT); |
| 41 | + | |
| 42 | - | my $frequency = ri($CHANDAT); |
| 42 | + | |
| 43 | - | my $Symbolrate = ri($CHANDAT); |
| 43 | + | |
| 44 | - | my $lnbLof = rs($CHANDAT); |
| 44 | + | |
| 45 | - | my $pmtPID = rs($CHANDAT); |
| 45 | + | |
| 46 | - | my $reserved1 = rs($CHANDAT); |
| 46 | + | |
| 47 | - | my $satModulation = rb($CHANDAT); |
| 47 | + | |
| 48 | - | my $avFormat = rb($CHANDAT); |
| 48 | + | |
| 49 | - | my $fec = rb($CHANDAT); |
| 49 | + | |
| 50 | - | my $reserved2 = rb($CHANDAT); |
| 50 | + | |
| 51 | - | my $reserved3 = rs($CHANDAT); |
| 51 | + | my $tunerType = rb($CHANDAT) || 0; |
| 52 | - | my $polarity = rb($CHANDAT); |
| 52 | + | my $channelGroup = rb($CHANDAT); |
| 53 | - | my $reserved4 = rb($CHANDAT); |
| 53 | + | my $satModulationSystem = rb($CHANDAT); |
| 54 | - | my $orbitalPosition = rs($CHANDAT); # a2i |
| 54 | + | my $flags = rb($CHANDAT); |
| 55 | - | my $tone = rb($CHANDAT); |
| 55 | + | my $frequency = ri($CHANDAT); |
| 56 | - | my $reserved5 = rb($CHANDAT); |
| 56 | + | my $Symbolrate = ri($CHANDAT); |
| 57 | - | my $discCext = rs($CHANDAT); |
| 57 | + | my $lnbLof = rs($CHANDAT); |
| 58 | - | my $descq = rb($CHANDAT); |
| 58 | + | my $pmtPID = rs($CHANDAT); |
| 59 | - | my $reserved6 = rb($CHANDAT); |
| 59 | + | my $reserved1 = rs($CHANDAT); |
| 60 | - | my $reserved7 = rs($CHANDAT); |
| 60 | + | my $satModulation = rb($CHANDAT); |
| 61 | - | my $audioPID = rs($CHANDAT); # a2i |
| 61 | + | my $avFormat = rb($CHANDAT); |
| 62 | - | my $reserved8 = rs($CHANDAT); |
| 62 | + | my $fec = rb($CHANDAT); |
| 63 | - | my $videoPID = rs($CHANDAT); # a2i |
| 63 | + | my $reserved2 = rb($CHANDAT); |
| 64 | - | my $transportStreamID = rs($CHANDAT); # a2i |
| 64 | + | my $reserved3 = rs($CHANDAT); |
| 65 | - | my $teletextPID = rs($CHANDAT); |
| 65 | + | my $polarity = rb($CHANDAT); |
| 66 | - | my $orginalNetworkID = rs($CHANDAT); # a2i |
| 66 | + | my $reserved4 = rb($CHANDAT); |
| 67 | - | my $serviceID = rs($CHANDAT); # a2i |
| 67 | + | my $orbitalPosition = rbs($CHANDAT);#rs($CHANDAT); # a2i |
| 68 | my $tone = rb($CHANDAT); | |
| 69 | - | my $channelID = (($tunerType + 1) * 536870912) + ($audioPID * 65536) + $serviceID; |
| 69 | + | my $reserved5 = rb($CHANDAT); |
| 70 | - | #my $channelID = $serviceID + ($audioPID + (2**16)) + (($tunerType + 1) + (2**29)) + ($transportStreamID * (2**32)) + (($orbitalPosition * 10) * (2**48)) + (1 * (2**61)); |
| 70 | + | my $discCext = rs($CHANDAT); |
| 71 | - | my $epgID = (($tunerType + 1) * 2**48 + $orginalNetworkID * 2**32 + $transportStreamID * 2**16 + $serviceID); |
| 71 | + | my $descq = rb($CHANDAT); |
| 72 | - | my $favID = ($tunerType + 1) * 536870912 + $serviceID; |
| 72 | + | my $reserved6 = rb($CHANDAT); |
| 73 | my $reserved7 = rs($CHANDAT); | |
| 74 | - | # last; |
| 74 | + | my $audioPID = rbs($CHANDAT);#rs($CHANDAT); # a2i |
| 75 | - | #} |
| 75 | + | my $reserved8 = rs($CHANDAT); |
| 76 | my $videoPID = rbs($CHANDAT);#rs($CHANDAT); # a2i | |
| 77 | - | close($CHANDAT); |
| 77 | + | my $transportStreamID = rbs($CHANDAT);#rs($CHANDAT); # a2i |
| 78 | my $teletextPID = rs($CHANDAT); | |
| 79 | - | my $dt = DateTime->now(time_zone => 'local'); |
| 79 | + | my $orginalNetworkID = rbs($CHANDAT);#rs($CHANDAT); # a2i |
| 80 | - | my $days = Delta_Days(1899, 12, 30, $dt->year, $dt->month, $dt->day); # Days since Delphi |
| 80 | + | my $serviceID = rbs($CHANDAT);#rs($CHANDAT); # a2i |
| 81 | - | my $minutesOfDay = (($dt->hour+1) * 60) + $dt->minute; |
| 81 | + | |
| 82 | - | my $precentage = $minutesOfDay / (24 * 60); |
| 82 | + | my $orbitalPosition = 4.8; |
| 83 | - | my $start = int($precentage*24*60); |
| 83 | + | |
| 84 | - | $precentage =~ s/^\d+\.//; |
| 84 | + | my $tvFlag = 1; |
| 85 | - | print $days.".".$precentage."<--\n"; |
| 85 | + | |
| 86 | - | print "start: ".$start."\n"; |
| 86 | + | my $sid = $serviceID; |
| 87 | - | print $dt->hour."<-keke\n"; |
| 87 | + | my $apid = $audioPID * (2**16); |
| 88 | my $ttyp = (($tunerType + 1) * (2**29)); | |
| 89 | - | print "TSID: ".$transportStreamID."\n"; |
| 89 | + | my $tsid = $transportStreamID * (2**32); |
| 90 | my $opo = ($orbitalPosition * 10) * (2**48); | |
| 91 | - | printf("CHANNEL-ID: %.0f\n", $channelID);
|
| 91 | + | my $tfl = $tvFlag * (2**61); |
| 92 | - | #print "CHANID: :".$channelID."\n"; |
| 92 | + | |
| 93 | - | print "EPGID: ".$epgID."\n"; |
| 93 | + | print "ServiceID: ".$serviceID."\n"; |
| 94 | - | print "FAVID: ".$favID."\n"; |
| 94 | + | print "AudioPID: ".$audioPID."\n"; |
| 95 | print "TunerType: ".$tunerType."\n"; | |
| 96 | print "TransportStream: ".$transportStreamID."\n"; | |
| 97 | print "Orbitpos: ".$orbitalPosition."\n"; | |
| 98 | print "TVflag: ".$tvFlag."\n\n"; | |
| 99 | print "--POWERED VALS--\n"; | |
| 100 | print "ServiceID: ".$sid."\n"; | |
| 101 | print "AudioPID: ".$apid."\n"; | |
| 102 | print "TunerType: ".$ttyp."\n"; | |
| 103 | print "TransportStream: ".$tsid."\n"; | |
| 104 | print "Orbitpos: ".$opo."\n"; | |
| 105 | print "TVflag: ".$tfl."\n\n"; | |
| 106 | ||
| 107 | my $channelID = $sid+$apid+$ttyp+$tsid+$opo+$tfl; | |
| 108 | print "ChannelID: ".$channelID."\n"; |