View difference between Paste ID: p5FSFAKQ and rTKGMUgV
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";