diff options
Diffstat (limited to 'PLUGINS/src/sky')
-rw-r--r-- | PLUGINS/src/sky/COPYING | 340 | ||||
-rw-r--r-- | PLUGINS/src/sky/HISTORY | 70 | ||||
-rw-r--r-- | PLUGINS/src/sky/Makefile | 83 | ||||
-rw-r--r-- | PLUGINS/src/sky/README | 49 | ||||
-rw-r--r-- | PLUGINS/src/sky/channels.conf.sky | 34 | ||||
-rwxr-xr-x | PLUGINS/src/sky/getskyepg.pl | 260 | ||||
-rw-r--r-- | PLUGINS/src/sky/lircd.conf.sky | 299 | ||||
-rw-r--r-- | PLUGINS/src/sky/sky.c | 303 |
8 files changed, 0 insertions, 1438 deletions
diff --git a/PLUGINS/src/sky/COPYING b/PLUGINS/src/sky/COPYING deleted file mode 100644 index f90922ee..00000000 --- a/PLUGINS/src/sky/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/PLUGINS/src/sky/HISTORY b/PLUGINS/src/sky/HISTORY deleted file mode 100644 index 25b8fc87..00000000 --- a/PLUGINS/src/sky/HISTORY +++ /dev/null @@ -1,70 +0,0 @@ -VDR Plugin 'sky' Revision History ---------------------------------- - -2002-12-01: Version 0.0.1 - -- Initial revision. - -2002-12-13: Version 0.1.0 - -- Changed setting of CXX and CXXFLAGS variables in Makefile. - -2003-05-09: Version 0.1.1 - -- Changed Start() to Initialize(). - -2004-01-04: Version 0.2.0 - -- Implemented automatic PID switching and channel detection - -2004-02-15: Version 0.3.0 - -- Now using the actual channel IDs a derived from the data stream. -- Switched EPG data retrieval to http://www.bleb.org. -- Added automatic DST detection to getskyepg.pl. -- Fixed handling receivers, so that a recording on the same channel - won't interrupt an ongoing Transfer mode. - -2004-10-16: Version 0.3.1 - -- Improved buffer handling. - -2004-12-12: Version 0.3.2 - -- Changed Apid access in cChannel. - -2004-12-19: Version 0.3.3 - -- Made several functions threadsafe. -- Removed delay_ms(), using cCondWait::SleepMs() instead. - -2005-09-17: Version 0.3.4 - -- Added a missing include statement. - -2006-03-26: Version 0.3.5 - -- Fixed format string handling. - -2006-12-02: Version 0.3.5 (version number not increased) - -- Made the getskyepg.pl script send a user agent message to - the server, according to the rules at http://bleb.org/tv/data/listings. - If your version of 'wget' doesn't support the -U option to set the user agent, - use the new option -U of getskyepg.pl to have the information added to the URL - as a query string. -- The getskyepg.pl script now replaces "&" with "&". - -2007-08-15: Version 0.3.6 - -- Moved the "all" target in the Makefile before the "Implicit rules", - so that a plain "make" will compile everything. - -2008-03-22: Version 0.3.7 - -- Removed the full path from the 'logger' call in the getskyepg.pl script (this - program is apparently "on the move" through the file system...). - -2008-09-07: Version 0.3.8 - -- Fixed renamed constants (thanks to Udo Richter). diff --git a/PLUGINS/src/sky/Makefile b/PLUGINS/src/sky/Makefile deleted file mode 100644 index 30fbb42c..00000000 --- a/PLUGINS/src/sky/Makefile +++ /dev/null @@ -1,83 +0,0 @@ -# -# Makefile for a Video Disk Recorder plugin -# -# $Id: Makefile 1.11 2008/01/13 13:00:16 kls Exp $ - -# The official name of this plugin. -# This name will be used in the '-P...' option of VDR to load the plugin. -# By default the main source file also carries this name. -# -PLUGIN = sky - -### The version number of this plugin (taken from the main source file): - -VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g') - -### The C++ compiler and options: - -CXX ?= g++ -CXXFLAGS ?= -fPIC -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses - -### The directory environment: - -VDRDIR = ../../.. -LIBDIR = ../../lib -TMPDIR = /tmp - -### Allow user defined options to overwrite defaults: - --include $(VDRDIR)/Make.config - -### The version number of VDR's plugin API (taken from VDR's "config.h"): - -APIVERSION = $(shell sed -ne '/define APIVERSION/s/^.*"\(.*\)".*$$/\1/p' $(VDRDIR)/config.h) - -### The name of the distribution archive: - -ARCHIVE = $(PLUGIN)-$(VERSION) -PACKAGE = vdr-$(ARCHIVE) - -### Includes and Defines (add further entries here): - -INCLUDES += -I$(VDRDIR)/include - -DEFINES += -D_GNU_SOURCE -DPLUGIN_NAME_I18N='"$(PLUGIN)"' - -### The object files (add further files here): - -OBJS = $(PLUGIN).o - -### The main target: - -all: libvdr-$(PLUGIN).so - -### Implicit rules: - -%.o: %.c - $(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) $< - -# Dependencies: - -MAKEDEP = g++ -MM -MG -DEPFILE = .dependencies -$(DEPFILE): Makefile - @$(MAKEDEP) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@ - --include $(DEPFILE) - -### Targets: - -libvdr-$(PLUGIN).so: $(OBJS) - $(CXX) $(CXXFLAGS) -shared $(OBJS) -o $@ - @cp --remove-destination $@ $(LIBDIR)/$@.$(APIVERSION) - -dist: clean - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @mkdir $(TMPDIR)/$(ARCHIVE) - @cp -a * $(TMPDIR)/$(ARCHIVE) - @tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE) - @-rm -rf $(TMPDIR)/$(ARCHIVE) - @echo Distribution package created as $(PACKAGE).tgz - -clean: - @-rm -f $(OBJS) $(DEPFILE) *.so *.tgz core* *~ diff --git a/PLUGINS/src/sky/README b/PLUGINS/src/sky/README deleted file mode 100644 index 19d5d988..00000000 --- a/PLUGINS/src/sky/README +++ /dev/null @@ -1,49 +0,0 @@ -This is a "plugin" for the Video Disk Recorder (VDR). - -Written by: Klaus Schmidinger <kls@tvdr.de> - -Project's homepage: http://www.tvdr.de - -Latest version available at: http://www.tvdr.de - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. -See the file COPYING for more information. - -Description: - -The 'sky' plugin implements a new device for VDR, which is based on the -MPEG2 encoder card described at linuxtv.org/mpeg2/kfir.xml. It -allows you to connect the analog a/v output of your Sky Digibox to VDR, -so that you can enjoy the full recording flexibility of VDR with your -Sky subscription. Note that this is NOT something that does anything -illegal, like decrypting the Sky programme without a subscription. You -will need a Sky Digibox and a valid subscription in order to use this -plugin. - -The 'kfir' module must be loaded with the option 'streamtype=4' to make it -produce a Transport Stream. - -The Digibox is remotely controlled through VDR via LIRC (see lirc.org). -The file lircd.conf.sky contains the remote control codes necessary to -control the Digibox. - -In order to access the Sky channels VDR needs to know the channel number -under which each channel is stored in the Sky Digibox. These numbers are -stored in the file 'channels.conf.sky', together with the channel IDs as -derived from the actual channel data and the names under which the EPG -data for each channel can be found (see below). Copy this file to your -plugins config directory, in a subdirectory named 'sky', as in - -/video/plugins/sky/channels.conf.sky - -The Sky EPG is available on the Internet at http://www.bleb.org. -The Perl script getskyepg.pl extracts the EPG data from these pages -and sends it to VDR via an SVDRP connection. The channel names as -used on the bleb.org pages are defined in the channels.conf.sky file. -You can keep your EPG data up-to-date by entering a call to getskyepg.pl -into your /etc/crontab. Call 'getskyepg.pl -h' for a list of options. -The getskyepg.pl script requires the programs /usr/bin/wget and /usr/bin/logger -to be installed on your system. diff --git a/PLUGINS/src/sky/channels.conf.sky b/PLUGINS/src/sky/channels.conf.sky deleted file mode 100644 index 5f0b7736..00000000 --- a/PLUGINS/src/sky/channels.conf.sky +++ /dev/null @@ -1,34 +0,0 @@ -# Sky channel definitions -# -# Syntax: -# -# ChannelID:ChannelNumber:EPGname -# -# where -# -# ChannelID is the channel ID as derived from the actual channel -# data as broadcast in the data stream (see man vdr(5)). -# -# ChannelNumber is the number of this channel as you have to -# enter it on the DigiBox remote control. -# -# EPGname is the name of the page at www.bleb.org that has EPG -# data for this channel (without the '.xml'). If no such -# page exists, 'x' is entered. -# -S28.2E-2-2027-4705:106:sky_one -S28.2E-2-2027-5104:107:sky_two -S28.2E-2-2044-10070:118:itv2 -S28.2E-2-2023-4905:130:scifi -S28.2E-2-2025-5904:127:paramount -S28.2E-2-2009-6201:551:discovery -S28.2E-2-2030-4809:310:sky_cinema -S28.2E-2-2007-4303:301:sky_movies1 -S28.2E-2-2007-4302:302:sky_movies2 -S28.2E-2-2007-4403:303:sky_movies3 -S28.2E-2-2011-4402:304:sky_movies4 -S28.2E-2-2011-4503:305:sky_movies5 -S28.2E-2-2011-4502:306:sky_movies6 -S28.2E-2-2030-4603:307:sky_movies7 -S28.2E-2-2007-5502:308:sky_movies8 -S28.2E-2-2030-4602:309:sky_movies9 diff --git a/PLUGINS/src/sky/getskyepg.pl b/PLUGINS/src/sky/getskyepg.pl deleted file mode 100755 index dfca96a5..00000000 --- a/PLUGINS/src/sky/getskyepg.pl +++ /dev/null @@ -1,260 +0,0 @@ -#!/usr/bin/perl - -# getskyepg.pl: Get EPG data for Sky channels from the Internet -# -# Connects to a running VDR instance via SVDRP, gets the channel data -# for the Sky channels and connects to Internet web pages to extract the -# EPG data for these channels. The result is sent to VDR via SVDRP. -# -# See the README file for copyright information and how to reach the author. -# -# $Id: getskyepg.pl 2.1 2009/10/18 14:05:47 kls Exp $ - -use Getopt::Std; -use Time::Local; - -$Usage = qq{ -Usage: $0 [options] - -Options: -c filename channel config file name (default: channels.conf.sky) - -d hostname destination hostname (default: localhost) - -p port SVDRP port number (default: 2001) - -S source channel source (default: S28.2E) - -D days days to get EPG for (1..7, default: 2) - -U use this if your version of 'wget' doesn't support -U -}; - -die $Usage if (!getopts("c:d:D:hp:S:U") || $opt_h); - -$Conf = $opt_c || "channels.conf.sky"; -$Dest = $opt_d || "localhost"; -$Port = $opt_p || 2001; -$Source = $opt_S || "S28.2E"; -$Days = $opt_D || 2; -$User = $opt_U; - -# See "Rules for using this data" on http://bleb.org/tv/data/listings. -# In case you modify this script in a way that changes its behavior -# towards the www.bleb.org website, please replace 'vdr-bugs@tvdr.de' -# with your own email address! That way Andrew Flegg <andrew@bleb.org>, -# who runs that web site, can contact you in case of problems. -$IDENT = "VDR::getskyepg.pl, http://www.tvdr.de - vdr-bugs\@tvdr.de"; -$GAP = 2; - -$SkyWebPage = "www.bleb.org/tv/data/listings"; -$WGET = "/usr/bin/wget -q -O-"; -$WGET .= " -U '$IDENT'" unless $User; -$LOGGER = "logger -t SKYEPG"; - -$DST = -3600; # Daylight Saving Time offset -$SecsInDay = 86400; - -@Channels = (); - -$idxSource = 0; -$idxNumber = 1; -$idxName = 2; - -Error("days out of range: $Days") unless (1 <= $Days && $Days <= 7); - -sub Log -{ - system("$LOGGER '@_'"); -} - -sub Error -{ - Log(@_); - die "$0: @_\n"; -} - -sub GetChannels -{ - open(CHANNELS, $Conf) || Error("$Conf: $!"); - while (<CHANNELS>) { - chomp; - next if (/^#/); - my @a = split(":"); - push(@Channels, [@a]) unless ($a[$idxName] eq "x"); - } - close(CHANNELS); -} - -GetChannels(); - -sub GetPage -{ - my $channel = shift; - my $day = shift; - $day--; - my $url = "http://$SkyWebPage/$day/$channel.xml"; - $url .= "?$IDENT" if $User; - Log("reading $url"); - my @page = split("\n", `$WGET '$url'`); - Log("received " . ($#page + 1) . " lines"); - return @page; -} - -sub ReplaceTags -{ - my $s = shift; - $s =~ s/&/&/g; - return $s; -} - -sub StripWhitespace -{ - my $s = shift; - $s =~ s/\s*(.*)\s*/$1/; - $s =~ s/\s+/ /g; - return $s; -} - -sub Extract -{ - my $s = shift; - my $t = shift; - $s =~ /<$t>([^<]*)<\/$t>/; - return ReplaceTags(StripWhitespace($1)); -} - -# In order to get the duration we need to buffer the last event: -$Id = ""; -$Time = 0; -$Title = ""; -$Subtitle = ""; -$Desc = ""; - -sub GetEpgData -{ - my ($channel, $channelID) = @_; - my $numEvents = 0; - SVDRPsend("C $channelID"); - $Time = 0; - for $day (1 .. $Days) { - my $dt = 0; - my @page = GetPage($channel, $day); - my $data = ""; - for $line (@page) { - chomp($line); - if ($line =~ /<programme>/) { - $data = ""; - } - elsif ($line =~ /<\/programme>/) { - my $title = Extract($data, "title"); - my $subtitle = Extract($data, "subtitle"); - my $desc = Extract($data, "desc"); - my $start = Extract($data, "start"); - # 'end' is useless, because it is sometimes missing :-( - # my $end = Extract($data, "end"); - if (!$subtitle) { - # They sometimes write all info into the description, as in - # Episode: some description. - # Why don't they just fill in the data correctly? - my ($s, $d) = ($desc =~ /([^:]*)[:](.*)/); - if ($s && $d) { - $subtitle = $s; - $desc = $d; - } - } - # 'start' and 'end' as time of day isn't of much use here, since - # the page for one day contains data that actually belongs to the - # next day (after midnight). Oh well, lets reconstruct the missing - # information: - $start = "0" . $start if (length($start) < 4); - my ($h, $m) = ($start =~ /(..)(..)/); - $dt = $SecsInDay if ($h > 12); - # convert to time_t: - my @gmt = gmtime; - $gmt[0] = 0; # seconds - $gmt[1] = $m; # minutes - $gmt[2] = $h; # hours - $time = timegm(@gmt) + ($day - 1) * $SecsInDay + ($h < 12 ? $dt : 0); - # compensate for DST: - $time += $DST if (localtime($time))[8]; - # create EPG data: - if ($Time) { - $duration = $time - $Time; - SVDRPsend("E $Id $Time $duration"); - SVDRPsend("T $Title"); - SVDRPsend("S $Subtitle"); - SVDRPsend("D $Desc"); - SVDRPsend("e"); - $numEvents++; - } - # buffer the last event: - $Id = $time / 60 % 0xFFFF; # this gives us unique ids for every minute of over 6 weeks - $Time = $time; - $Title = $title; - $Subtitle = $subtitle; - $Desc = $desc; - } - else { - $data .= $line; - } - } - sleep($GAP); - } - SVDRPsend("c"); - Log("generated $numEvents EPG events"); -} - -sub ProcessEpg -{ - for (@Channels) { - my $channel = @$_[$idxName]; - my $channelID = @$_[$idxSource]; - Log("processing channel $channel - $channelID"); - SVDRPsend("PUTE"); - SVDRPreceive(354); - GetEpgData($channel, $channelID); - SVDRPsend("."); - SVDRPreceive(250); - } - Log("done"); -} - -#--------------------------------------------------------------------------- -# TODO: make this a Perl module??? What about Error()??? - -use Socket; - -$Timeout = 300; # max. seconds to wait for response - -$SIG{ALRM} = sub { Error("timeout"); }; -alarm($Timeout); - -$iaddr = inet_aton($Dest) || Error("no host: $Dest"); -$paddr = sockaddr_in($Port, $iaddr); - -$proto = getprotobyname('tcp'); -socket(SOCK, PF_INET, SOCK_STREAM, $proto) || Error("socket: $!"); -connect(SOCK, $paddr) || Error("connect: $!"); -select(SOCK); $| = 1; -SVDRPreceive(220); -ProcessEpg(); -SVDRPsend("QUIT"); - -sub SVDRPsend -{ - my $s = shift; - print SOCK "$s\r\n"; -} - -sub SVDRPreceive -{ - my $expect = shift | 0; - my @a = (); - while (<SOCK>) { - s/\s*$//; # 'chomp' wouldn't work with "\r\n" - push(@a, $_); - if (substr($_, 3, 1) ne "-") { - my $code = substr($_, 0, 3); - Error("expected SVDRP code $expect, but received $code") if ($code != $expect); - last; - } - } - return @a; -} - -#--------------------------------------------------------------------------- diff --git a/PLUGINS/src/sky/lircd.conf.sky b/PLUGINS/src/sky/lircd.conf.sky deleted file mode 100644 index 191dcb56..00000000 --- a/PLUGINS/src/sky/lircd.conf.sky +++ /dev/null @@ -1,299 +0,0 @@ -# Copyright (C) 1999 Christoph Bartelmus -# -# You may only use this file if you make it available to others, -# i.e. if you send it to <lirc@bartelmus.de> -# -# this config file was automatically generated -# using lirc-0.6.4-CVS(serial) on Mon Jul 9 08:14:04 2001 -# -# contributed by Steve Davies <steve@daviesfam.org> -# -# brand: sky -# model no. of remote control: -# supported devices: 34000 20 -# -# - -begin remote - - name SKY - flags CONST_LENGTH|RAW_CODES - eps 30 - aeps 100 - ptrail 0 - repeat 0 0 - gap 149692 - frequency 36000 - duty_cycle 50 - - begin raw_codes - - name 0 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 - - name 1 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 888 - - name 2 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 888 888 - 444 - - name 3 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 888 444 - 444 - - name 4 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 888 888 444 444 - 444 - - name 5 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 888 888 888 - - name 6 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 888 444 444 888 - 444 - - name 7 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 888 444 444 444 - 444 - - name 8 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 888 888 444 444 444 444 - 444 - - name 9 - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 888 888 444 444 888 - - name RED - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 444 444 888 888 444 444 888 888 - - name GREEN - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 444 444 888 888 444 444 444 444 888 444 - - name YELLOW - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 444 444 888 888 444 444 444 444 444 444 - - name BLUE - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 444 444 444 444 888 444 444 444 444 444 444 - 444 - - name TEXT - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 888 444 444 444 444 444 444 888 444 444 - 444 - - name BACKUP - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 888 888 444 444 444 444 444 444 444 444 888 444 444 - - name HELP - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 888 888 444 444 444 444 444 444 444 444 444 444 888 - - name CURSOR-LEFT - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 888 888 444 444 888 888 888 444 - - name CURSOR-DOWN - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 888 888 444 444 888 444 444 888 - - name CURSOR-RIGHT - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 888 888 444 444 888 888 444 444 - - name CURSOR-UP - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 888 888 444 444 888 444 444 444 444 444 - - name SELECT - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 888 888 888 444 444 444 444 888 444 444 444 - - name CHANNEL-DOWN - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 888 888 444 444 444 444 444 444 888 - - name CHANNEL-UP - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 888 888 444 444 444 444 444 444 444 444 - 444 - - name I - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 888 444 444 888 444 444 888 888 888 444 444 - - name ONOFF - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 888 444 444 888 444 444 - 444 - - name SKY - 2664 888 444 444 444 444 444 888 444 888 888 444 444 444 444 444 - 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 444 - 444 444 888 888 444 444 444 444 444 444 444 444 444 444 444 444 - 444 - - name TV - 2830 724 583 333 553 339 - 548 791 543 795 977 357 - 527 364 524 367 524 368 - 522 369 521 370 520 371 - 519 372 519 372 519 372 - 518 372 518 374 963 818 - 516 376 510 381 509 382 - 954 828 508 407 481 - - name SKY - 2829 726 580 336 551 340 - 547 791 540 798 977 366 - 519 364 523 367 521 370 - 521 370 520 371 520 371 - 520 371 519 372 518 373 - 517 374 517 374 957 825 - 512 379 512 380 513 377 - 511 381 506 410 477 413 - 483 - - name MUTE - 2567 429 751 447 743 456 - 1335 464 734 466 1325 496 - 697 504 693 506 1284 513 - 681 518 681 517 679 520 - 678 26288 2533 462 734 489 - 705 470 1323 501 695 503 - 1287 511 683 516 683 518 - 1277 522 676 521 678 521 - 675 523 675 26286 2533 465 - 731 491 702 499 1293 504 - 692 507 1280 518 683 516 - 679 524 1272 522 675 529 - 670 523 682 517 675 26286 - 2532 465 729 493 702 473 - 1318 506 688 509 1282 517 - 680 519 677 524 1274 523 - 676 - - name VOLUME-UP - 2568 430 766 433 1342 456 - 734 489 708 466 1326 497 - 699 505 686 508 1286 512 - 688 510 683 516 682 516 - 681 26284 2540 481 711 488 - 1301 498 703 495 695 504 - 1284 516 682 516 684 515 - 1276 522 675 523 675 524 - 674 524 675 26286 2532 490 - 709 489 1300 500 689 509 - 695 517 1270 516 683 520 - 675 519 1274 529 668 525 - 675 524 673 526 672 26288 - 2532 466 731 491 1300 499 - 695 503 692 509 1277 520 - 681 518 679 519 1278 520 - 675 - - name VOLUME-DOWN - 2562 434 1348 451 1332 465 - 733 489 704 496 1296 504 - 690 507 694 511 1281 511 - 683 523 677 515 679 520 - 680 25687 2533 464 1330 491 - 1295 505 693 506 689 510 - 1293 505 684 516 678 520 - 1276 523 677 520 675 524 - 673 526 674 25686 2531 467 - 1324 498 1292 506 691 509 - 683 515 1280 518 678 521 - 675 523 1273 525 674 527 - 672 525 673 527 671 25685 - 2531 467 1320 501 1288 511 - 687 511 688 512 1282 516 - 678 521 675 524 1273 - - name TVGUIDE - 2834 720 586 330 554 338 - 548 794 539 796 975 360 - 528 363 521 371 519 371 - 520 371 519 375 514 374 - 517 374 516 375 513 379 - 511 380 510 381 949 387 - 500 836 505 387 945 391 - 493 868 469 422 468 - - name BOXOFFICE - 2833 745 564 329 555 338 - 548 790 545 793 982 352 - 529 362 526 365 522 370 - 519 371 519 372 519 372 - 518 373 517 374 513 378 - 515 376 507 384 506 385 - 945 390 496 396 498 392 - 496 419 468 847 936 - - name SERVICES - 2829 725 585 330 555 338 - 548 798 537 794 979 356 - 528 368 522 363 523 369 - 521 370 521 370 520 370 - 520 371 520 371 520 371 - 519 372 519 372 518 373 - 964 371 517 375 513 377 - 511 404 489 402 485 828 - 514 - - name INTERACTIVE - 2829 726 591 324 553 340 - 550 788 542 796 981 354 - 532 359 522 369 522 369 - 520 372 518 373 518 373 - 516 375 515 375 513 379 - 515 375 510 381 948 389 - 498 392 504 412 470 867 - 916 866 913 - - end raw_codes - -end remote diff --git a/PLUGINS/src/sky/sky.c b/PLUGINS/src/sky/sky.c deleted file mode 100644 index 75bd9ec5..00000000 --- a/PLUGINS/src/sky/sky.c +++ /dev/null @@ -1,303 +0,0 @@ -/* - * sky.c: A plugin for the Video Disk Recorder - * - * See the README file for copyright information and how to reach the author. - * - * $Id: sky.c 2.1 2008/09/07 11:54:07 kls Exp $ - */ - -#include <sys/socket.h> -#include <sys/stat.h> -#include <sys/time.h> -#include <sys/un.h> -#include <unistd.h> -#include <vdr/device.h> -#include <vdr/plugin.h> -#include <vdr/sources.h> - -static const char *VERSION = "0.3.8"; -static const char *DESCRIPTION = "Sky Digibox interface"; - -// --- cDigiboxDevice -------------------------------------------------------- - -#define DUMMYAPID 80 -#define DUMMYVPID 160 - -class cSkyChannel : public cListObject { -public: - tChannelID channelID; - int digiboxChannelNumber; - bool Parse(const char *s); - }; - -bool cSkyChannel::Parse(const char *s) -{ - char *id = NULL; - if (2 == sscanf(s, "%a[^:]:%d", &id, &digiboxChannelNumber)) - channelID = tChannelID::FromString(id); - free(id); - return digiboxChannelNumber && channelID.Valid(); -} - -class cSkyChannels : public cConfig<cSkyChannel> { -public: - cSkyChannel *GetSkyChannel(const cChannel *Channel); - }; - -cSkyChannel *cSkyChannels::GetSkyChannel(const cChannel *Channel) -{ - tChannelID ChannelID = Channel->GetChannelID(); - for (cSkyChannel *sc = First(); sc; sc = Next(sc)) { - if (ChannelID == sc->channelID) - return sc; - } - return NULL; -} - -cSkyChannels SkyChannels; - -class cDigiboxDevice : public cDevice { -private: - int source; - int digiboxChannelNumber; - int fd_dvr; - int apid, vpid; - cTSBuffer *tsBuffer; - int fd_lirc; - void LircSend(const char *s); - void LircSend(int n); -protected: - virtual bool SetPid(cPidHandle *Handle, int Type, bool On); - virtual bool OpenDvr(void); - virtual void CloseDvr(void); - virtual bool GetTSPacket(uchar *&Data); -public: - cDigiboxDevice(void); - virtual ~cDigiboxDevice(); - virtual bool ProvidesSource(int Source) const; - virtual bool ProvidesTransponder(const cChannel *Channel) const; - virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsSetChannel = NULL) const; - virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView); - }; - -cDigiboxDevice::cDigiboxDevice(void) -{ - source = cSource::FromString("S28.2E");//XXX parameter??? - digiboxChannelNumber = 0; - fd_dvr = -1; - apid = vpid = 0; - struct sockaddr_un addr; - addr.sun_family = AF_UNIX; - strn0cpy(addr.sun_path, "/dev/lircd", sizeof(addr.sun_path));//XXX parameter??? - fd_lirc = socket(AF_UNIX, SOCK_STREAM, 0); - if (fd_lirc >= 0) { - if (connect(fd_lirc, (struct sockaddr *)&addr, sizeof(addr)) < 0) { - LOG_ERROR; - close(fd_lirc); - } - } - else - LOG_ERROR; -} - -cDigiboxDevice::~cDigiboxDevice() -{ - if (fd_lirc >= 0) - close(fd_lirc); -} - -void cDigiboxDevice::LircSend(const char *s) -{ - char buf[100]; - snprintf(buf, sizeof(buf), "SEND_ONCE SKY %s\n", s); - dsyslog(buf);//XXX - if (write(fd_lirc, buf, strlen(buf)) < 0) - LOG_ERROR;//XXX _STR - cCondWait::SleepMs(200); -} - -void cDigiboxDevice::LircSend(int n) -{ - char buf[10]; - snprintf(buf, sizeof(buf), "%d", n); - char *p = buf; - while (*p) { - char q[10]; - sprintf(q, "%c", *p); - LircSend(q); - p++; - } -} - -bool cDigiboxDevice::SetPid(cPidHandle *Handle, int Type, bool On) -{ - //dsyslog("SetPid %d %d", Handle->pid, On); - return true; -} - -bool cDigiboxDevice::OpenDvr(void) -{ - CloseDvr(); - fd_dvr = open("/dev/video2", O_RDONLY | O_NONBLOCK);//XXX parameter??? - if (fd_dvr >= 0) - tsBuffer = new cTSBuffer(fd_dvr, MEGABYTE(2), CardIndex() + 1); - return fd_dvr >= 0; -} - -void cDigiboxDevice::CloseDvr(void) -{ - if (fd_dvr >= 0) { - close(fd_dvr); - fd_dvr = -1; - delete tsBuffer; - tsBuffer = NULL; - } -} - -bool cDigiboxDevice::GetTSPacket(uchar *&Data) -{ - if (tsBuffer) { - Data = tsBuffer->Get(); - if (Data) { - // insert the actual PIDs: - int Pid = (((uint16_t)Data[1] & TS_PID_MASK_HI) << 8) | Data[2]; - if (Pid == DUMMYAPID) - Pid = apid; - else if (Pid == DUMMYVPID) - Pid = vpid; - Data[1] = ((Pid >> 8) & 0xFF) | (Data[1] & ~TS_PID_MASK_HI); - Data[2] = Pid & 0xFF; - } - return true; - } - return false; -} - -bool cDigiboxDevice::ProvidesSource(int Source) const -{ - return source == Source; -} - -bool cDigiboxDevice::ProvidesTransponder(const cChannel *Channel) const -{ - return false; // can't provide any actual transponder -} - -bool cDigiboxDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const -{ - bool result = false; - bool hasPriority = Priority < 0 || Priority > this->Priority(); - bool needsDetachReceivers = true; - - cSkyChannel *SkyChannel = SkyChannels.GetSkyChannel(Channel); - if (SkyChannel) { - if (Receiving(true)) { - if (digiboxChannelNumber == SkyChannel->digiboxChannelNumber) { - needsDetachReceivers = false; - result = true; - } - else - result = hasPriority; - } - else - result = hasPriority; - } - if (NeedsDetachReceivers) - *NeedsDetachReceivers = needsDetachReceivers; - return result; -} - -bool cDigiboxDevice::SetChannelDevice(const cChannel *Channel, bool LiveView) -{ - if (fd_lirc >= 0 && !Receiving(true)) { // if we are receiving the channel is already set! - cSkyChannel *SkyChannel = SkyChannels.GetSkyChannel(Channel); - if (SkyChannel) { - digiboxChannelNumber = SkyChannel->digiboxChannelNumber; - apid = Channel->Apid(0); - vpid = Channel->Vpid(); - //XXX only when recording??? -> faster channel switching! - LircSend("SKY"); // makes sure the Digibox is "on" - //XXX lircprint(fd_lirc, "BACKUP"); - //XXX lircprint(fd_lirc, "BACKUP"); - //XXX lircprint(fd_lirc, "BACKUP"); - LircSend(digiboxChannelNumber); - } - } - return true; -} - -// --- cPluginSky ------------------------------------------------------------ - -class cPluginSky : public cPlugin { -private: - // Add any member variables or functions you may need here. -public: - cPluginSky(void); - virtual ~cPluginSky(); - virtual const char *Version(void) { return VERSION; } - virtual const char *Description(void) { return DESCRIPTION; } - virtual const char *CommandLineHelp(void); - virtual bool ProcessArgs(int argc, char *argv[]); - virtual bool Initialize(void); - virtual void Housekeeping(void); - virtual cMenuSetupPage *SetupMenu(void); - virtual bool SetupParse(const char *Name, const char *Value); - }; - -cPluginSky::cPluginSky(void) -{ - // Initialize any member variables here. - // DON'T DO ANYTHING ELSE THAT MAY HAVE SIDE EFFECTS, REQUIRE GLOBAL - // VDR OBJECTS TO EXIST OR PRODUCE ANY OUTPUT! -} - -cPluginSky::~cPluginSky() -{ - // Clean up after yourself! -} - -const char *cPluginSky::CommandLineHelp(void) -{ - // Return a string that describes all known command line options. - return NULL; -} - -bool cPluginSky::ProcessArgs(int argc, char *argv[]) -{ - // Implement command line argument processing here if applicable. - return true; -} - -bool cPluginSky::Initialize(void) -{ - // Initialize any background activities the plugin shall perform. - const char *ConfigDir = ConfigDirectory(Name()); - if (ConfigDir) { - if (SkyChannels.Load(AddDirectory(ConfigDir, "channels.conf.sky"), true)) { - new cDigiboxDevice; - return true; - } - } - else - esyslog("ERROR: can't get config directory"); - return false; -} - -void cPluginSky::Housekeeping(void) -{ - // Perform any cleanup or other regular tasks. -} - -cMenuSetupPage *cPluginSky::SetupMenu(void) -{ - // Return a setup menu in case the plugin supports one. - return NULL; -} - -bool cPluginSky::SetupParse(const char *Name, const char *Value) -{ - // Parse your own setup parameters and store their values. - return false; -} - -VDRPLUGINCREATOR(cPluginSky); // Don't touch this! |