ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Linux-DVB/eg/extract-si
Revision: 1.1
Committed: Mon Sep 6 06:25:12 2004 UTC (19 years, 9 months ago) by root
Branch: MAIN
Log Message:
*** empty log message ***

File Contents

# Content
1 #!/opt/bin/perl
2
3 use Event;
4 use Linux::DVB;
5
6 use Data::Dumper;
7
8 my $fe = new Linux::DVB::Frontend "/dev/dvb/adapter0/frontend0";
9
10 sub new_demux {
11 new Linux::DVB::Demux "/dev/dvb/adapter0/demux0";
12 }
13
14 package scanner;
15
16 sub new {
17 print "new scanner\n";
18 my $self = bless { };
19
20 $self->{10} = ::new_demux;
21 $self->{10}->sct_filter (18, "", "");
22 $self->{10}->start;
23
24 $self->{w} = Event->io (fd => $self->{10}->fh, poll => 'r', cb => sub {
25 sysread $self->{10}->fh, my $data, 8192;
26 print PApp::Util::dumpval Linux::DVB::Decode::si $data;
27 });
28 }
29
30 sub DESTROY {
31 my $self = shift;
32 $self->{w}->cancel;
33 }
34
35 package main;
36
37 my $frequency = -1;
38
39 sub status_changed {
40 if ($fe->parameters->{frequency} != $frequency) {
41 $frequency = $fe->parameters->{frequency};
42 undef $scanner;
43 }
44 if ($fe->status & FE_HAS_LOCK) {
45 $scanner ||= new scanner;
46 } else {
47 undef $scanner;
48 }
49 }
50
51 Event->io (fd => $fe->{fd}, poll => 'e', cb => sub {
52 my $event = $fe->event;
53 # tuning event, status changes not reported
54 status_changed;
55 });
56
57 Event->timer (interval => 1, cb => sub {
58 #print $fe->status & FE_HAS_LOCK, "\n";
59 });
60
61 status_changed;
62
63 Event::loop;