diff -Nru vdr-2.0.2-281~6781c8b/CONTRIBUTORS vdr-2.1.1-282~5076cfb/CONTRIBUTORS --- vdr-2.0.2-281~6781c8b/CONTRIBUTORS 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/CONTRIBUTORS 2013-08-25 18:08:12.000000000 +0000 @@ -537,7 +537,7 @@ Onno Kreuzinger for reporting leftover references to the file FORMATS in MANUAL and svdrp.c -Rudi Hofer (Rudi.Hofer@gmx.de) +Rudi Hofer for his help in keeping 'channels.conf' up to date for reporting a problem with overlapping tab positions in skins when using wide fonts @@ -700,6 +700,8 @@ for helping to debug a problem with reduced number of retries in Transfer Mode on SD-FF cards for reporting a problem with resuming replay of PES recordings + for suggesting to make all bonded devices (except for the master) turn off their LNB + power completely to avoid problems when receiving vertically polarized transponders Reinhard Walter Buchner for adding some satellites to 'sources.conf' @@ -1790,6 +1792,7 @@ for requesting to keep using relative paths when building plugins locally for fixing a problem with detecting user inactivity in case the system time is changed after VDR has been started + for a patch that was used to add definitions for older DVB API versions, back until 5.0 Sven Kreiensen for his help in keeping 'channels.conf.terr' up to date @@ -2017,6 +2020,8 @@ be escaped for changing the template for PLGCFG to $(CONFDIR)/plugins.mk for updating the help and man page entry about the location of the epg.data file + for reporting a possible crash when shutting down VDR while subtitles are being + displayed Steffen Beyer for fixing setting the colored button help after deleting a recording in case the next @@ -2545,6 +2550,7 @@ for reporting that cPlugin::Active() was called too often for adding HandledExternally() to the EPG handler interface for adding IsUpdate() to the EPG handler interface + for adding Begin/EndSegmentTransfer() to the EPG handler interface Peter Pinnau for reporting that 'uint32_t' requires including stdint.h in font.h on some systems @@ -2695,6 +2701,7 @@ for reporting broken SI data on Czech/Slovak channels after changing the default character set to ISO-8859-9 for adding MPEG 1 handling to remux.c + for a patch that was used as a base for implementing support for positioners Magnus Andersson for translating OSD texts to the Swedish language @@ -2752,7 +2759,7 @@ Timo Helkio for reporting a hangup when replaying a TS recording with subtitles activated -Derek Kelly (user.vdr@gmail.com) +Derek Kelly for fixing handling the 'new' indicator in the recordings menu for TS recordings for reporting a problem with HD NTSC broadcasts that split frames over several payload units @@ -2876,6 +2883,7 @@ for making plugin Makefiles use DESTDIR and the 'install' program for suggesting to make sure that plugins include the VDR header files from the actual VDR source directory when doing "make plugins" + for reverting the change from version 1.5.7 that made all logging go to LOG_ERR Stefan Huskamp for suggesting to make entering characters via the number keys @@ -3154,3 +3162,10 @@ Dominique Dumont for reporting a crash in the LCARS skin's main menu in case there is no current channel + +Seppo Ingalsuo + for a patch that was used as a base for implementing support for positioners + +Manfred Vlkel + for suggesting to make all bonded devices (except for the master) turn off their LNB + power completely to avoid problems when receiving vertically polarized transponders diff -Nru vdr-2.0.2-281~6781c8b/Doxyfile.filter vdr-2.1.1-282~5076cfb/Doxyfile.filter --- vdr-2.0.2-281~6781c8b/Doxyfile.filter 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/Doxyfile.filter 2013-08-25 18:08:12.000000000 +0000 @@ -9,7 +9,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: Doxyfile.filter 2.1 2013/02/17 10:54:05 kls Exp $ +# $Id: Doxyfile.filter 3.0 2013/02/17 10:54:05 kls Exp $ $TAG = "///<"; diff -Nru vdr-2.0.2-281~6781c8b/HISTORY vdr-2.1.1-282~5076cfb/HISTORY --- vdr-2.0.2-281~6781c8b/HISTORY 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/HISTORY 2013-08-25 18:08:12.000000000 +0000 @@ -7144,7 +7144,7 @@ Christian Richter). - Added DeleteEvent() to the EPG handler interface, so that an EPG handler can trigger deleting of an event (thanks to Christian Kaiser). -- Speeded up opening menus on systems with many (several thousands) of recordings, by +- Speeded up opening menus on systems with many (several thousands of) recordings, by caching the information whether a recording is stored on the video directory file system within the cRecording data (based on a patch from Torsten Lang). @@ -7782,7 +7782,7 @@ - Bumped all version numbers to 2.0.0. - Official release. -2013-04-13: Version 2.0.1 +2013-04-11: Version 2.0.1 - Fixed initializing cDevice::keepTracks. - Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than @@ -7805,10 +7805,97 @@ - Fixed displaying the frame number when setting an editing mark (thanks to Thomas Gnther). - Fixed no longer generating any editing marks if the edited recording results in just - one single sequence. + one single sequence (reported by Halim Sahin). - Fixed an error message when parsing SCR values in diseqc.conf. - Fixed an unexpected RCS version tag in the newplugin script. - Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported by Stefan Braun). - Fixed a crash in the LCARS skin's main menu in case there is no current channel (reported by Dominique Dumont). + +2013-08-25: Version 2.1.1 + +- Fixed initializing cDevice::keepTracks. +- Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than + one character (reported by Stefan Braun). +- Removed all "modified since version 1.6" markers from PLUGINS.html. +- Added definitions for older DVB API versions, back until 5.0 (based on a patch from + Udo Richter). +- Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to + improve overall performance when an editing process is running (thanks to Jochen + Dolze). +- Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is + used (thanks to Lars Hanisch). +- Changed the sign of the satellite position value in cSource to reflect the standard + of western values being negative. The new member function cSource::Position() can be + used to retrieve the orbital position of a satellite. +- Fixed multiple occurrences of the same directory in the recordings list in case there + are directories that only differ in non-alphanumeric characters (was broken by + "Fixed selecting the last replayed recording in the Recordings menu in case there + are folders and plain recordings with names that differ only in non-alphanumeric + characters" in version 1.7.36). +- Fixed displaying the frame number when setting an editing mark (thanks to Thomas + Gnther). +- Fixed no longer generating any editing marks if the edited recording results in just + one single sequence (reported by Halim Sahin). +- Fixed an error message when parsing SCR values in diseqc.conf. +- Fixed an unexpected RCS version tag in the newplugin script. +- Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported + by Stefan Braun). +- Fixed a crash in the LCARS skin's main menu in case there is no current channel + (reported by Dominique Dumont). +- Added basic support for positioners to control steerable satellite dishes (based on + a patch from Seppo Ingalsuo and Ales Jurik). + + Supports GotoN (aka "DiSEqC 1.2") and GotoX (aka "USALS"). + + The new DiSEqC command code 'P' can be used to instruct a positioner to move the + dish to the required satellite position. When a 'P' code is processed, further + execution of the remaining DiSEqC sequence (if any) is postponed until the positioner + has reached the new satellite position. + + The new special source value of "S360E" can be used in diseqc.conf to indicate that + an entry using a positioner can move the dish to any requested position within its + range. Think of it as "full circle". + + The devices a particular cDiseqc or cScr applies to are now stored directly in each + cDiseqc or cScr, respectively. + + A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners"). + + The new function cSkinDisplayChannel::SetPositioner() can be implemented by skins to + show the user a progress display when the dish is being moved. The default implementation + calls SetMessage() with a string indicating the new position the dish is being moved to. + The LCARS skin shows a progress bar indicating the movement of the dish. + + The new parameters "Site latitude", "Site longitude", "Positioner speed", and + "Positioner swing" in the "Setup/LNB" menu can be used to configure the necessary + values for a steerable dish. + + The cDvbTuner now has a new status tsPositioning, in which it waits until a steerable + dish has reached its target position. Parsing SI data is paused until the target + position has been reached. +- The LCARS skin now shows the source value of the current channel in its channel display. +- Fixed asserting free disk space in the cutter. +- No longer trying to delete old recordings in AssertFreeDiskSpace() if the given + Priority is less than 1. +- Fixed handling LIRC events in case repeated events are lost. +- Fixed a possible crash when shutting down VDR while subtitles are being displayed + (reported by Ville Skytt). +- cDevice::IsPrimaryDevice() now also checks whether the primary device actually has + a decoder and returns false otherwise. This should improve device allocation on + systems that are only used as a receiver and don't actually display anything. +- Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances + in transfer mode. +- All bonded devices (except for the master) now turn off their LNB power completely + to avoid problems when receiving vertically polarized transponders (suggested by + Manfred Vlkel and Oliver Endriss). +- Reverted the change from version 1.5.7 that made all logging go to LOG_ERR (thanks + to Christopher Reimer). +- Added Begin/EndSegmentTransfer() to the EPG handler interface (thanks to Jrg Wendel). +- The code for distributing recordings over several video directories is now + deprecated and disabled by default. + You can re-enable this feature by removing the comment sign ('//') from the beginning + of the line + //#define DEPRECATED_DISTRIBUTED_VIDEODIR // Code enclosed with this macro is ... + in the file videodir.c. Note, though, that this can only be a temporary workaround. + This feature will be completely removed in one of the next developer versions. + Distributing the video directory over several disks was a useful feature in times + when disks were still relatively small, but it also caused serious problems in case + one of the disks failed. Nowadays hard disks come in sizes measured in terabytes, + and tools like "mhddfs" can be used to combine several disks to form one large volume. + A recommended method for a relatively safe disk setup in a VDR system is to use two + 1TB (or larger) disks and use them as a RAID-1 (mirrored). That way, if one disk + fails, you can replace it without data loss. diff -Nru vdr-2.0.2-281~6781c8b/INSTALL vdr-2.1.1-282~5076cfb/INSTALL --- vdr-2.0.2-281~6781c8b/INSTALL 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/INSTALL 2013-08-25 18:08:12.000000000 +0000 @@ -325,38 +325,9 @@ program splits video files into chunks of about 2GB. You should use a disk with several gigabytes of free space. One GB can store roughly half an hour of SD video data, or 10 minutes of HD video. - -If you have more than one disk and don't want to combine them to form -one large logical volume, you can set up several video directories as -mount points for these disks. All of these directories must have the -same basic name and must end with a numeric part, which starts at 0 for -the main directory and has increasing values for the rest of the -directories. For example - - /srv/vdr/video0 - /srv/vdr/video1 - /srv/vdr/video2 - -would be a setup with three directories. You can use more than one -numeric digit: - - /mnt/MyVideos/vdr.00 - /mnt/MyVideos/vdr.01 - /mnt/MyVideos/vdr.02 - ... - /mnt/MyVideos/vdr.11 - -would set up twelve disks (wow, what a machine that would be!). - -To use such a multi directory setup, you need to add the '-v' option -with the name of the basic directory when running 'vdr': - - vdr -v /srv/vdr/video0 - -WARNING: Using multiple disks to form one large video directory this way -is deprecated and will be removed from VDR in a future version! Either -use one of today's large terabyte disks (preferably with a backup disk -in a RAID-1 array), or use something like "mhddfs". +Either use one of today's large terabyte disks (preferably with a backup disk +in a RAID-1 array), or use something like "mhddfs" to group several disks +into one large volume. Note that you should not copy any non-VDR files into the video directory, since this might cause a lot of unnecessary disk access when VDR cleans up those diff -Nru vdr-2.0.2-281~6781c8b/MANUAL vdr-2.1.1-282~5076cfb/MANUAL --- vdr-2.0.2-281~6781c8b/MANUAL 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/MANUAL 2013-08-25 18:08:12.000000000 +0000 @@ -776,6 +776,28 @@ are connected to the same sat cable must be set to the same number here. + Use dish positioner = no + By default, the 'P' command code in DiSEqC command sequences + is ignored. Set this parameter to 'yes' if you are using a + satellite dish positioner. + + Site latitude (degrees) = 0 + Site longitude (degrees) = 0 + Set these to the latitude and longitude of your dish's + location if you use a satellite dish positioner. Use the + "Green" key to switch between north/south and east/west, + respectively. + + Max. positioner swing (degrees) = 65 + Defines the maximum angle by which the positioner can move + the dish away from due south (or north) in either direction. + The valid range is 0...90. + + Positioner speed (degrees/s) = 1.5 + Defines the speed at which the positioner moves the dish. + The valid range is 0.1...180. This value is used to calculate + how long it takes the positioner to reach the target position. + CAM: n CAM Name Shows the CAM slots that are present in this system, where diff -Nru vdr-2.0.2-281~6781c8b/Make.config.template vdr-2.1.1-282~5076cfb/Make.config.template --- vdr-2.0.2-281~6781c8b/Make.config.template 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/Make.config.template 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: Make.config.template 2.19 2013/02/18 10:55:39 kls Exp $ +# $Id: Make.config.template 3.0 2013/02/18 10:55:39 kls Exp $ ### The C compiler and options: diff -Nru vdr-2.0.2-281~6781c8b/Make.global vdr-2.1.1-282~5076cfb/Make.global --- vdr-2.0.2-281~6781c8b/Make.global 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/Make.global 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: Make.global 1.2 2012/12/29 12:03:01 kls Exp $ +# $Id: Make.global 3.0 2012/12/29 12:03:01 kls Exp $ # This is just a dummy file for plugins that use old style (version 1.7.33 # or earlier) Makefiles. diff -Nru vdr-2.0.2-281~6781c8b/Makefile vdr-2.1.1-282~5076cfb/Makefile --- vdr-2.0.2-281~6781c8b/Makefile 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: Makefile 2.54 2013/03/11 15:01:01 kls Exp $ +# $Id: Makefile 3.1 2013/04/14 12:18:08 kls Exp $ .DELETE_ON_ERROR: @@ -68,7 +68,7 @@ OBJS = audio.o channels.o ci.o config.o cutter.o device.o diseqc.o dvbdevice.o dvbci.o\ dvbplayer.o dvbspu.o dvbsubtitle.o eit.o eitscan.o epg.o filter.o font.o i18n.o interface.o keys.o\ - lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o\ + lirc.o menu.o menuitems.o nit.o osdbase.o osd.o pat.o player.o plugin.o positioner.o\ receiver.o recorder.o recording.o remote.o remux.o ringbuffer.o sdt.o sections.o shutdown.o\ skinclassic.o skinlcars.o skins.o skinsttng.o sourceparams.o sources.o spu.o status.o svdrp.o themes.o thread.o\ timers.o tools.o transfer.o vdr.o videodir.o diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/HISTORY vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/HISTORY --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/HISTORY 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/HISTORY 2013-08-25 18:08:12.000000000 +0000 @@ -75,3 +75,8 @@ 2013-04-11: Version 2.0.1 - Fixed aspect ratio and position of scaled video. + +2013-08-23: Version 2.1.1 + +- Fixed aspect ratio and position of scaled video. +- Added yellow button in main menu to send CEC TV-Off command. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/dvbhddevice.c vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/dvbhddevice.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/dvbhddevice.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/dvbhddevice.c 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ #include "menu.h" #include "setup.h" -static const char *VERSION = "2.0.1"; +static const char *VERSION = "2.1.1"; static const char *DESCRIPTION = trNOOP("HD Full Featured DVB device"); static const char *MAINMENUENTRY = "dvbhddevice"; diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/menu.c vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/menu.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/menu.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/menu.c 2013-08-25 18:08:12.000000000 +0000 @@ -13,7 +13,7 @@ { mVideoConversionItem = new cOsdItem("", osUnknown, false); Add(mVideoConversionItem); - SetHelp(tr("Video Conversion"), tr("TV on")); + SetHelp(tr("Video Conversion"), tr("TV on"), tr("TV off")); SetVideoConversion(); } @@ -38,6 +38,11 @@ state = osEnd; break; + case kYellow: + mHdffCmdIf->CmdHdmiSendCecCommand(HDFF_CEC_COMMAND_TV_OFF); + state = osEnd; + break; + case kOk: state = osEnd; break; diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/po/de_DE.po vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/po/de_DE.po --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/po/de_DE.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/po/de_DE.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: vdr-dvbhddevice 0.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-11-13 20:08+0100\n" +"POT-Creation-Date: 2013-08-23 12:10+0200\n" "PO-Revision-Date: 2011-04-25 21:44+0200\n" "Last-Translator: Christoph Haubrich\n" "Language-Team: \n" @@ -25,6 +25,9 @@ msgid "TV on" msgstr "TV ein" +msgid "TV off" +msgstr "TV aus" + msgid "Automatic" msgstr "automatisch" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/po/fi_FI.po vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/po/fi_FI.po --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/po/fi_FI.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/po/fi_FI.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: vdr-dvbhddevice 0.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-11-13 20:08+0100\n" +"POT-Creation-Date: 2013-08-23 12:10+0200\n" "PO-Revision-Date: 2011-04-25 21:44+0200\n" "Last-Translator: Rolf Ahrenberg\n" "Language-Team: Finnish \n" @@ -25,6 +25,9 @@ msgid "TV on" msgstr "TV päälle" +msgid "TV off" +msgstr "" + msgid "Automatic" msgstr "automaattinen" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/po/it_IT.po vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/po/it_IT.po --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbhddevice/po/it_IT.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbhddevice/po/it_IT.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: vdr-dvbhddevice 0.0.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2012-11-13 20:08+0100\n" +"POT-Creation-Date: 2013-08-23 12:10+0200\n" "PO-Revision-Date: 2013-02-18 23:42+0100\n" "Last-Translator: Diego Pierotto \n" "Language-Team: \n" @@ -29,6 +29,9 @@ msgid "TV on" msgstr "TV accesa" +msgid "TV off" +msgstr "" + msgid "Automatic" msgstr "Automatica" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/HISTORY vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/HISTORY --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/HISTORY 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/HISTORY 2013-08-25 18:08:12.000000000 +0000 @@ -45,3 +45,8 @@ 2013-03-31: Version 2.0.0 - Official release. + +2013-08-22: Version 2.0.1 + +- Fixed handling the -o option (short form of --outputonly; problem reported by + Mario Edelmann). diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 1.20 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsddevice.c vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsddevice.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsddevice.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsddevice.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,14 +3,14 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: dvbsddevice.c 1.10 2013/03/31 09:30:18 kls Exp $ + * $Id: dvbsddevice.c 3.1 2013/08/22 08:20:18 kls Exp $ */ #include #include #include "dvbsdffdevice.h" -static const char *VERSION = "2.0.0"; +static const char *VERSION = "2.0.1"; static const char *DESCRIPTION = "SD Full Featured DVB device"; class cPluginDvbsddevice : public cPlugin { @@ -48,7 +48,7 @@ }; int c; - while ((c = getopt_long(argc, argv, "", long_options, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "o", long_options, NULL)) != -1) { switch (c) { case 'o': probe->SetOutputOnly(true); break; diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffdevice.c vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffdevice.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffdevice.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffdevice.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: dvbsdffdevice.c 2.35 2013/02/17 13:16:18 kls Exp $ + * $Id: dvbsdffdevice.c 3.0 2013/02/17 13:16:18 kls Exp $ */ #include "dvbsdffdevice.h" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffdevice.h vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffdevice.h --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffdevice.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffdevice.h 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: dvbsdffdevice.h 2.16 2013/02/17 13:16:29 kls Exp $ + * $Id: dvbsdffdevice.h 3.0 2013/02/17 13:16:29 kls Exp $ */ #ifndef __DVBSDFFDEVICE_H diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffosd.c vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffosd.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffosd.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffosd.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: dvbsdffosd.c 2.3 2011/04/17 12:55:09 kls Exp $ + * $Id: dvbsdffosd.c 3.0 2011/04/17 12:55:09 kls Exp $ */ #include "dvbsdffosd.h" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffosd.h vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffosd.h --- vdr-2.0.2-281~6781c8b/PLUGINS/src/dvbsddevice/dvbsdffosd.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/dvbsddevice/dvbsdffosd.h 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: dvbsdffosd.h 2.2 2012/12/03 13:43:55 kls Exp $ + * $Id: dvbsdffosd.h 3.0 2012/12/03 13:43:55 kls Exp $ */ #ifndef __DVBSDFFODF_H diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/epgtableid0/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/epgtableid0/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/epgtableid0/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/epgtableid0/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 1.13 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/epgtableid0/epgtableid0.c vdr-2.1.1-282~5076cfb/PLUGINS/src/epgtableid0/epgtableid0.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/epgtableid0/epgtableid0.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/epgtableid0/epgtableid0.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: epgtableid0.c 1.4 2013/03/31 09:30:18 kls Exp $ + * $Id: epgtableid0.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/hello/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/hello/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/hello/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/hello/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.18 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/hello/hello.c vdr-2.1.1-282~5076cfb/PLUGINS/src/hello/hello.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/hello/hello.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/hello/hello.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: hello.c 2.6 2013/03/31 09:30:18 kls Exp $ + * $Id: hello.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/osddemo/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/osddemo/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/osddemo/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/osddemo/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.16 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/osddemo/osddemo.c vdr-2.1.1-282~5076cfb/PLUGINS/src/osddemo/osddemo.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/osddemo/osddemo.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/osddemo/osddemo.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: osddemo.c 2.12 2013/03/31 09:30:18 kls Exp $ + * $Id: osddemo.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/HISTORY vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/HISTORY --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/HISTORY 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/HISTORY 2013-08-25 18:08:12.000000000 +0000 @@ -87,3 +87,7 @@ 2013-03-31: Version 2.0.0 - Official release. + +2013-07-01: + +- Added option -x to pic2mpg. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.18 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/entry.c vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/entry.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/entry.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/entry.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: entry.c 2.1 2012/02/17 14:00:28 kls Exp $ + * $Id: entry.c 3.0 2012/02/17 14:00:28 kls Exp $ */ #include "entry.h" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/entry.h vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/entry.h --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/entry.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/entry.h 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: entry.h 2.0 2008/01/06 12:30:50 kls Exp $ + * $Id: entry.h 3.0 2008/01/06 12:30:50 kls Exp $ */ #ifndef _ENTRY_H diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/menu.c vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/menu.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/menu.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/menu.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: menu.c 2.0 2008/01/13 11:35:18 kls Exp $ + * $Id: menu.c 3.0 2008/01/13 11:35:18 kls Exp $ */ #include "menu.h" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/menu.h vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/menu.h --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/menu.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/menu.h 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: menu.h 2.0 2008/01/12 11:22:52 kls Exp $ + * $Id: menu.h 3.0 2008/01/12 11:22:52 kls Exp $ */ #ifndef _MENU_H diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/pic2mpg vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/pic2mpg --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/pic2mpg 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/pic2mpg 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ # # See the README file for copyright information and how to reach the author. # -# $Id: pic2mpg 2.5 2013/02/17 13:17:13 kls Exp $ +# $Id: pic2mpg 3.1 2013/07/01 08:33:38 kls Exp $ use File::Path; use File::Spec; @@ -23,9 +23,10 @@ -o percent overscan in percent -s size Screen size (WIDTHxHEIGHT, default is 1920x1080) -v num Verbose (0=none, 1=list files, 2=detailed) + -x dir[,...] eXclude the given directories }; -getopts("fho:s:v:") || die $Usage; +getopts("fho:s:v:x:") || die $Usage; die $Usage if $opt_h; @@ -33,6 +34,7 @@ $Overscan = $opt_o || 0; $Size = $opt_s || "1920x1080"; $Verbose = $opt_v; +@Exclude = split(',', $opt_x || ""); $ListFiles = $Verbose >= 1; $Detailed = $Verbose >= 2; @@ -85,7 +87,11 @@ @Pictures = `find -type f | sort`; chomp(@Pictures); +PIC: for $pic (@Pictures) { + for (@Exclude) { + next PIC if ($pic =~ /\/$_\//); + } my $mpg = "$MPGDIR/$pic.mpg"; if ($Force || !-e $mpg || -M $mpg > -M $pic) { (my $dir = $mpg) =~ s/\/[^\/]*$//; diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/pictures.c vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/pictures.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/pictures.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/pictures.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: pictures.c 2.9 2013/03/31 09:30:18 kls Exp $ + * $Id: pictures.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/player.c vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/player.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/player.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/player.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: player.c 2.2 2012/04/28 11:58:15 kls Exp $ + * $Id: player.c 3.0 2012/04/28 11:58:15 kls Exp $ */ #include "player.h" diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/player.h vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/player.h --- vdr-2.0.2-281~6781c8b/PLUGINS/src/pictures/player.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/pictures/player.h 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: player.h 2.1 2012/04/28 11:56:01 kls Exp $ + * $Id: player.h 3.0 2012/04/28 11:56:01 kls Exp $ */ #ifndef _PLAYER_H diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/rcu/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/rcu/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/rcu/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/rcu/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 1.13 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/rcu/rcu.c vdr-2.1.1-282~5076cfb/PLUGINS/src/rcu/rcu.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/rcu/rcu.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/rcu/rcu.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: rcu.c 1.5 2013/03/31 09:30:18 kls Exp $ + * $Id: rcu.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/servicedemo/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/servicedemo/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/servicedemo/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/servicedemo/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.14 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/servicedemo/svccli.c vdr-2.1.1-282~5076cfb/PLUGINS/src/servicedemo/svccli.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/servicedemo/svccli.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/servicedemo/svccli.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: svccli.c 2.4 2013/03/31 09:30:18 kls Exp $ + * $Id: svccli.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/servicedemo/svcsvr.c vdr-2.1.1-282~5076cfb/PLUGINS/src/servicedemo/svcsvr.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/servicedemo/svcsvr.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/servicedemo/svcsvr.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: svcsvr.c 2.4 2013/03/31 09:30:18 kls Exp $ + * $Id: svcsvr.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/skincurses/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/skincurses/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/skincurses/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/skincurses/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.18 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/skincurses/skincurses.c vdr-2.1.1-282~5076cfb/PLUGINS/src/skincurses/skincurses.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/skincurses/skincurses.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/skincurses/skincurses.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: skincurses.c 2.13 2013/03/31 09:30:18 kls Exp $ + * $Id: skincurses.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/status/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/status/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/status/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/status/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.15 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/status/status.c vdr-2.1.1-282~5076cfb/PLUGINS/src/status/status.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/status/status.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/status/status.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: status.c 2.4 2013/03/31 09:30:18 kls Exp $ + * $Id: status.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/svdrpdemo/Makefile vdr-2.1.1-282~5076cfb/PLUGINS/src/svdrpdemo/Makefile --- vdr-2.0.2-281~6781c8b/PLUGINS/src/svdrpdemo/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/svdrpdemo/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a Video Disk Recorder plugin # -# $Id: Makefile 2.15 2013/01/12 13:45:01 kls Exp $ +# $Id: Makefile 3.0 2013/01/12 13:45:01 kls Exp $ # The official name of this plugin. # This name will be used in the '-P...' option of VDR to load the plugin. diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS/src/svdrpdemo/svdrpdemo.c vdr-2.1.1-282~5076cfb/PLUGINS/src/svdrpdemo/svdrpdemo.c --- vdr-2.0.2-281~6781c8b/PLUGINS/src/svdrpdemo/svdrpdemo.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS/src/svdrpdemo/svdrpdemo.c 2013-08-25 18:08:12.000000000 +0000 @@ -3,7 +3,7 @@ * * See the README file for copyright information and how to reach the author. * - * $Id: svdrpdemo.c 2.3 2013/03/31 09:30:18 kls Exp $ + * $Id: svdrpdemo.c 3.0 2013/03/31 09:30:18 kls Exp $ */ #include diff -Nru vdr-2.0.2-281~6781c8b/PLUGINS.html vdr-2.1.1-282~5076cfb/PLUGINS.html --- vdr-2.0.2-281~6781c8b/PLUGINS.html 2013-07-22 14:16:51.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/PLUGINS.html 2013-08-25 18:08:12.000000000 +0000 @@ -31,14 +31,14 @@

The VDR Plugin System

-Version 2.0 +Version 2.1

Copyright © 2013 Klaus Schmidinger
vdr@tvdr.de
www.tvdr.de

-Important modifications introduced since version 1.6 are marked like this. +Important modifications introduced since version 2.0 are marked like this.

VDR provides an easy to use plugin interface that allows additional functionality @@ -82,7 +82,7 @@

  • Wakeup
  • Setup parameters
  • The Setup menu -
  • Additional files +
  • Additional files
  • Internationalization
  • Custom services
  • SVDRP commands @@ -99,10 +99,11 @@
  • Skins
  • Themes
  • Devices +
  • Positioners
  • Audio
  • Remote Control
  • Conditional Access -
  • Electronic Program Guide +
  • Electronic Program Guide @@ -173,15 +174,13 @@ the name of that plugin (in the above example that would be hello). What's inside the individual source directory of a plugin is entirely up to the author of that plugin. The only prerequisites are -that there is a Makefile that provides the targets all, install and +that there is a Makefile that provides the targets all, install and clean, and that a call to make all actually produces a dynamically loadable library file for that plugin (we'll get to the details later). - The dynamically loadable library file for the plugin shall be located directly under the plugin's source directory. See the section Initializing a new plugin directory for how to generate an example Makefile. -

    The lib directory contains the dynamically loadable libraries of all available plugins. Note that the names of these files are created by concatenating @@ -891,70 +890,51 @@ your setup parameters and use that one to copy all parameters with one single statement (like VDR does with its cSetup class). -


    Additional files

    +

    Additional files

    I want my own stuff!

    - There may be situations where a plugin requires files of its own. While the plugin is free to store such files anywhere it sees fit, it might be a good idea to put them in a common place, preferably where such data already exists. -

    - configuration files, maybe for data that can't be stored in the simple setup parameters of VDR, or maybe because it needs to launch other programs that simply need a separate configuration file. -

    - cache files, to store data so that future requests for that data can be served faster. The data that is stored within a cache might be values that have been computed earlier or duplicates of original values that are stored elsewhere. -

    - resource files, for providing additional files, like pictures, movie clips or channel logos. -

    - Therefore VDR provides the functions

    -
     const char *ConfigDirectory(const char *PluginName = NULL);
     const char *CacheDirectory(const char *PluginName = NULL);
     const char *ResourceDirectory(const char *PluginName = NULL);
    -
     

    - each of which returns a string containing the directory that VDR uses for its own files (defined through the options in the call to VDR), extended by - "/plugins". So assuming the VDR configuration directory is /video (the default if no -c or -v option is given), a call to ConfigDirectory() will return /video/plugins. The first call to ConfigDirectory() will automatically make sure that the plugins subdirectory will exist. If, for some reason, this cannot be achieved, NULL will be returned. - The behavior of CacheDirectory() and ResourceDirectory() is similar. -

    The additional plugins directory is used to keep files from plugins apart from those of VDR itself, making sure there will be no name clashes. If a plugin - needs only one extra file, it is suggested that this file be named name.*, where name shall be the name of the plugin. -

    If a plugin needs more than one such file, it is suggested that the plugin stores these in a subdirectory of its own, named after the plugin. To easily get such a name - the functions can be given an additional string that will be appended to the returned directory name, as in -

     const char *MyConfigDir = ConfigDirectory(Name());
    @@ -965,16 +945,12 @@
     (or return NULL in case of an error).
     

    - The returned strings are statically allocated and will be overwritten by subsequent calls! -

    - The ConfigDirectory(), CacheDirectory() and ResourceDirectory() functions are static member functions of the cPlugin class. This allows them to be called even from outside any member function of the derived plugin class, by writing -

     const char *MyConfigDir = cPlugin::ConfigDirectory();
    @@ -1265,10 +1241,10 @@
     
     class cMyStatusMonitor : public cStatus {
     protected:
    -  virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView);
    +  virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView);
       };
     
    -void cMyStatusMonitor::ChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView)
    +void cMyStatusMonitor::ChannelSwitch(const cDevice *Device, int ChannelNumber, bool LiveView)
     {
       if (ChannelNumber)
          dsyslog("channel switched to %d on DVB %d", ChannelNumber, Device->CardIndex());
    @@ -1525,13 +1501,11 @@
       cMyReceiver(int Pid);
       };
     
    -
     cMyReceiver::cMyReceiver(int Pid)
     :cReceiver(NULL, -1)
     {
       AddPid(Pid);
     }
    -
     
     cMyReceiver::~cMyReceiver()
     {
    @@ -1557,7 +1531,7 @@
     PID (for example the Teletext PID). In order to not interfere with other recording
     operations, it sets its priority to -1 (any negative value will allow
     a cReceiver to be detached from its cDevice at any time
    -in favor of a timer recording or live viewing).
    +in favor of a timer recording or live viewing).
     

    Once a cReceiver has been created, it needs to be attached to a cDevice: @@ -1573,9 +1547,7 @@ video stream (this may be different from the primary device in case of Transfer Mode).

    - The cReceiver must be detached from its device before it is deleted. -


    Filters

    @@ -1853,7 +1825,7 @@ selecting which channel it shall tune to:

    -virtual int NumProvidedSystems(void) const;
    +virtual int NumProvidedSystems(void) const;
     virtual bool ProvidesSource(int Source) const;
     virtual bool ProvidesTransponder(const cChannel *Channel) const;
     virtual bool ProvidesChannel(const cChannel *Channel, int Priority = -1, bool *NeedsDetachReceivers = NULL) const;
    @@ -1902,7 +1874,7 @@
     virtual bool CanReplay(void) const;
     virtual bool SetPlayMode(ePlayMode PlayMode);
     virtual int64_t GetSTC(void);
    -virtual bool IsPlayingVideo(void) const;
    +virtual bool IsPlayingVideo(void) const;
     virtual bool HasIBPTrickSpeed(void);
     virtual void TrickSpeed(int Speed);
     virtual void Clear(void);
    @@ -1931,7 +1903,7 @@
     
     

     virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
    -virtual int ReadFilter(int Handle, void *Buffer, size_t Length);
    +virtual int ReadFilter(int Handle, void *Buffer, size_t Length);
     virtual void CloseFilter(int Handle);
     

    @@ -1987,7 +1959,6 @@ a "full featured" DVB card) or through a graphics adapter that overlays its output with the video signal, doesn't matter.

    -

    In order to be able to determine the proper size of the OSD, the device should implement the function @@ -1996,7 +1967,6 @@

    By default, an OSD size of 720x480 with an aspect ratio of 1.0 is assumed. -

    Initializing new devices @@ -2017,8 +1987,6 @@ shut down (delete) all devices when the program terminates. It is therefore important that the devices are created on the heap, using the new operator! - -

    Device hooks

    @@ -2056,6 +2024,48 @@

    and shall not delete this object. It will be automatically deleted when the program ends. + +

    +

    Positioners

    + +
    Now you see me - now you don't!

    + +If you are using a positioner (also known as "motor" or "rotor") to move your +satellite dish to receive various satellites, you will be using the 'P' command +in the diseqc.conf file. This command sends the necessary data to the +positioner to move the dish to the satellite's orbital position. By default VDR +uses its builtin DiSEqC positioner control. If your positioner requires a different +method of controlling (like maybe via a serial link), you can derive a class +from cPositioner, as in + +

    +#include <vdr/positioner.h>
    +
    +class cMyPositioner : public cPositioner {
    +private:
    +  void SendDiseqc(uint8_t *Codes, int NumCodes);
    +public:
    +  cMyPositioner(void);
    +  virtual void Drive(ePositionerDirection Direction);
    +  virtual void Step(ePositionerDirection Direction, uint Steps = 1);
    +  virtual void Halt(void);
    +  virtual void SetLimit(ePositionerDirection Direction);
    +  virtual void DisableLimits(void);
    +  virtual void EnableLimits(void);
    +  virtual void StorePosition(uint Number);
    +  virtual void RecalcPositions(uint Number);
    +  virtual void GotoPosition(uint Number, int Longitude);
    +  virtual void GotoAngle(int Longitude);
    +  };
    +

    + +See the implementation of cDiseqcPositioner in diseqc.c for details. +

    +You should create your derived positioner object in the +Start() function of your plugin. +Note that the object has to be created on the heap (using new), +and you shall not delete it at any point (it will be deleted automatically +when the program ends).


    Audio

    @@ -2222,12 +2232,10 @@ The other parameters have the same meaning as in the first version of this function.

    - If your remote control has a repeat function that automatically repeats key events if a key is held pressed down for a while, your derived class should use the global parameters Setup.RcRepeatDelay and Setup.RcRepeatDelta to allow users to configure the behavior of this function. -


    Conditional Access

    @@ -2264,7 +2272,6 @@ See the description of this function in ci.h for details. -

    Electronic Program Guide

    The grass is always greener on the other side...

    @@ -2294,7 +2301,6 @@ to signal VDR that no other EPG handlers shall be queried after this one.

    See VDR/epg.h for details. -

    diff -Nru vdr-2.0.2-281~6781c8b/audio.c vdr-2.1.1-282~5076cfb/audio.c --- vdr-2.0.2-281~6781c8b/audio.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/audio.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: audio.c 2.2 2010/05/16 13:30:11 kls Exp $ + * $Id: audio.c 3.0 2010/05/16 13:30:11 kls Exp $ */ #include "audio.h" diff -Nru vdr-2.0.2-281~6781c8b/audio.h vdr-2.1.1-282~5076cfb/audio.h --- vdr-2.0.2-281~6781c8b/audio.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/audio.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: audio.h 2.1 2008/07/06 11:39:21 kls Exp $ + * $Id: audio.h 3.0 2008/07/06 11:39:21 kls Exp $ */ #ifndef __AUDIO_H diff -Nru vdr-2.0.2-281~6781c8b/channels.c vdr-2.1.1-282~5076cfb/channels.c --- vdr-2.0.2-281~6781c8b/channels.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/channels.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.c 2.24 2012/07/14 12:34:47 kls Exp $ + * $Id: channels.c 3.0 2012/07/14 12:34:47 kls Exp $ */ #include "channels.h" diff -Nru vdr-2.0.2-281~6781c8b/channels.h vdr-2.1.1-282~5076cfb/channels.h --- vdr-2.0.2-281~6781c8b/channels.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/channels.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: channels.h 2.16 2012/06/17 11:21:33 kls Exp $ + * $Id: channels.h 3.0 2012/06/17 11:21:33 kls Exp $ */ #ifndef __CHANNELS_H diff -Nru vdr-2.0.2-281~6781c8b/ci.c vdr-2.1.1-282~5076cfb/ci.c --- vdr-2.0.2-281~6781c8b/ci.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/ci.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ci.c 2.12 2013/02/17 13:17:28 kls Exp $ + * $Id: ci.c 3.0 2013/02/17 13:17:28 kls Exp $ */ #include "ci.h" diff -Nru vdr-2.0.2-281~6781c8b/ci.h vdr-2.1.1-282~5076cfb/ci.h --- vdr-2.0.2-281~6781c8b/ci.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/ci.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ci.h 2.2 2012/02/29 10:24:27 kls Exp $ + * $Id: ci.h 3.0 2012/02/29 10:24:27 kls Exp $ */ #ifndef __CI_H diff -Nru vdr-2.0.2-281~6781c8b/config.c vdr-2.1.1-282~5076cfb/config.c --- vdr-2.0.2-281~6781c8b/config.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/config.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.c 2.38 2013/03/18 08:57:50 kls Exp $ + * $Id: config.c 3.1 2013/05/23 12:41:06 kls Exp $ */ #include "config.h" @@ -389,6 +389,12 @@ LnbFrequLo = 9750; LnbFrequHi = 10600; DiSEqC = 0; + UsePositioner = 0; + SiteLat = 0; + SiteLon = 0; + PositionerSpeed = 15; + PositionerSwing = 65; + PositionerLastLon = 0; SetSystemTime = 0; TimeSource = 0; TimeTransponder = 0; @@ -594,6 +600,12 @@ else if (!strcasecmp(Name, "LnbFrequLo")) LnbFrequLo = atoi(Value); else if (!strcasecmp(Name, "LnbFrequHi")) LnbFrequHi = atoi(Value); else if (!strcasecmp(Name, "DiSEqC")) DiSEqC = atoi(Value); + else if (!strcasecmp(Name, "UsePositioner")) UsePositioner = atoi(Value); + else if (!strcasecmp(Name, "SiteLat")) SiteLat = atoi(Value); + else if (!strcasecmp(Name, "SiteLon")) SiteLon = atoi(Value); + else if (!strcasecmp(Name, "PositionerSpeed")) PositionerSpeed = atoi(Value); + else if (!strcasecmp(Name, "PositionerSwing")) PositionerSwing = atoi(Value); + else if (!strcasecmp(Name, "PositionerLastLon")) PositionerLastLon = atoi(Value); else if (!strcasecmp(Name, "SetSystemTime")) SetSystemTime = atoi(Value); else if (!strcasecmp(Name, "TimeSource")) TimeSource = cSource::FromString(Value); else if (!strcasecmp(Name, "TimeTransponder")) TimeTransponder = atoi(Value); @@ -703,6 +715,12 @@ Store("LnbFrequLo", LnbFrequLo); Store("LnbFrequHi", LnbFrequHi); Store("DiSEqC", DiSEqC); + Store("UsePositioner", UsePositioner); + Store("SiteLat", SiteLat); + Store("SiteLon", SiteLon); + Store("PositionerSpeed", PositionerSpeed); + Store("PositionerSwing", PositionerSwing); + Store("PositionerLastLon", PositionerLastLon); Store("SetSystemTime", SetSystemTime); Store("TimeSource", cSource::ToString(TimeSource)); Store("TimeTransponder", TimeTransponder); diff -Nru vdr-2.0.2-281~6781c8b/config.h vdr-2.1.1-282~5076cfb/config.h --- vdr-2.0.2-281~6781c8b/config.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/config.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 2.76.1.2 2013/04/27 10:18:08 kls Exp $ + * $Id: config.h 3.2 2013/05/23 12:40:19 kls Exp $ */ #ifndef __CONFIG_H @@ -22,13 +22,13 @@ // VDR's own version number: -#define VDRVERSION "2.0.2" -#define VDRVERSNUM 20002 // Version * 10000 + Major * 100 + Minor +#define VDRVERSION "2.1.1" +#define VDRVERSNUM 20101 // Version * 10000 + Major * 100 + Minor // The plugin API's version number: -#define APIVERSION "2.0.0" -#define APIVERSNUM 20000 // Version * 10000 + Major * 100 + Minor +#define APIVERSION "2.1.1" +#define APIVERSNUM 20101 // Version * 10000 + Major * 100 + Minor // When loading plugins, VDR searches them by their APIVERSION, which // may be smaller than VDRVERSION in case there have been no changes to @@ -266,6 +266,12 @@ int LnbFrequLo; int LnbFrequHi; int DiSEqC; + int UsePositioner; + int SiteLat; + int SiteLon; + int PositionerSpeed; + int PositionerSwing; + int PositionerLastLon; int SetSystemTime; int TimeSource; int TimeTransponder; diff -Nru vdr-2.0.2-281~6781c8b/cutter.c vdr-2.1.1-282~5076cfb/cutter.c --- vdr-2.0.2-281~6781c8b/cutter.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/cutter.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: cutter.c 2.25.1.1 2013/05/02 09:21:18 kls Exp $ + * $Id: cutter.c 3.2 2013/08/21 13:15:24 kls Exp $ */ #include "cutter.h" @@ -556,6 +556,8 @@ bool Independent; int Length; if (LoadFrame(Index, Buffer, Independent, Length)) { + // Make sure there is enough disk space: + AssertFreeDiskSpace(-1); bool CutIn = !SeamlessBegin && Index == BeginIndex; bool CutOut = !SeamlessEnd && Index == EndIndex - 1; bool DeletedFrame = false; @@ -608,8 +610,6 @@ cCondWait::SleepMs(100); continue; } - // Make sure there is enough disk space: - AssertFreeDiskSpace(-1); // Determine the actual begin and end marks, skipping any marks at the same position: cMark *EndMark = fromMarks.GetNextEnd(BeginMark); // Process the current sequence: diff -Nru vdr-2.0.2-281~6781c8b/cutter.h vdr-2.1.1-282~5076cfb/cutter.h --- vdr-2.0.2-281~6781c8b/cutter.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/cutter.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: cutter.h 2.3 2012/02/16 12:05:33 kls Exp $ + * $Id: cutter.h 3.0 2012/02/16 12:05:33 kls Exp $ */ #ifndef __CUTTER_H diff -Nru vdr-2.0.2-281~6781c8b/debian/changelog vdr-2.1.1-282~5076cfb/debian/changelog --- vdr-2.0.2-281~6781c8b/debian/changelog 2013-07-22 14:17:00.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/debian/changelog 2013-08-25 18:08:24.000000000 +0000 @@ -1,24 +1,49 @@ -vdr (2.0.2-281~6781c8b-ppa1~quantal) quantal; urgency=medium +vdr (2.1.1-282~5076cfb-ppa1~quantal) quantal; urgency=medium - * [6781c8ba020d31d2c9d616c0279bb40633a8f963] - Version 2.0.2 - VDR version 2.0.2 is now available at + * [5076cfb2ed0888dd16baeed1cbaa15cfbcd483c7] + Version 2.1.1 + VDR developer version 2.1.1 is now available at - ftp://ftp.tvdr.de/vdr/vdr-2.0.2.tar.bz2 + ftp://ftp.tvdr.de/vdr/Developer/vdr-2.1.1.tar.bz2 - A 'diff' against the previous stable version is available at + A 'diff' against the previous version is available at - ftp://ftp.tvdr.de/vdr/Developer/vdr-2.0.1-2.0.2.diff + ftp://ftp.tvdr.de/vdr/Developer/vdr-2.0.0-2.1.1.diff MD5 checksums: - 5359cae7e14671cc9a3c690d45d8e0a2 vdr-2.0.2.tar.bz2 - f4dfc7e6e9170cf56a10b1a2183e84a3 vdr-2.0.1-2.0.2.diff + b17f9838bb8ddee9620f838fea7a171d vdr-2.1.1.tar.bz2 + 8b8ca593885c380cd370e6d19a5b16a1 vdr-2.0.0-2.1.1.diff - This version fixes a few minor bugs that came up after the release of - version 2.0.1. + WARNING: + ======== + + This is a *developer* version. Even though *I* use it in my productive + environment, I strongly recommend that you only use it under controlled + conditions and for testing and debugging. + + The main focus of this version is on adding basic support for positioners + to control steerable satellite dishes. Manually controlling the dish position + and storing individual positions will follow later. + + The fixes contained in this version will be released in a stable version 2.0.3 + later, if there are no problems. From the HISTORY file: + - Fixed initializing cDevice::keepTracks. + - Fixed an endless loop in cTextWrapper::Set() in case the given Width is smaller than + one character (reported by Stefan Braun). + - Removed all "modified since version 1.6" markers from PLUGINS.html. + - Added definitions for older DVB API versions, back until 5.0 (based on a patch from + Udo Richter). + - Changed cThread::SetIOPriority() from "best effort class" to "idle class" in order to + improve overall performance when an editing process is running (thanks to Jochen + Dolze). + - Fixed handling '/' and '~' in recording file names in case DirectoryEncoding is + used (thanks to Lars Hanisch). + - Changed the sign of the satellite position value in cSource to reflect the standard + of western values being negative. The new member function cSource::Position() can be + used to retrieve the orbital position of a satellite. - Fixed multiple occurrences of the same directory in the recordings list in case there are directories that only differ in non-alphanumeric characters (was broken by "Fixed selecting the last replayed recording in the Recordings menu in case there @@ -27,13 +52,68 @@ - Fixed displaying the frame number when setting an editing mark (thanks to Thomas Günther). - Fixed no longer generating any editing marks if the edited recording results in just - one single sequence. + one single sequence (reported by Halim Sahin). - Fixed an error message when parsing SCR values in diseqc.conf. - Fixed an unexpected RCS version tag in the newplugin script. - Fixed an endless loop in the DrawEllipse() functions for very small ellipses (reported by Stefan Braun). - Fixed a crash in the LCARS skin's main menu in case there is no current channel (reported by Dominique Dumont). + - Added basic support for positioners to control steerable satellite dishes (based on + a patch from Seppo Ingalsuo and Ales Jurik). + + Supports GotoN (aka "DiSEqC 1.2") and GotoX (aka "USALS"). + + The new DiSEqC command code 'P' can be used to instruct a positioner to move the + dish to the required satellite position. When a 'P' code is processed, further + execution of the remaining DiSEqC sequence (if any) is postponed until the positioner + has reached the new satellite position. + + The new special source value of "S360E" can be used in diseqc.conf to indicate that + an entry using a positioner can move the dish to any requested position within its + range. Think of it as "full circle". + + The devices a particular cDiseqc or cScr applies to are now stored directly in each + cDiseqc or cScr, respectively. + + A plugin can implement a custom positioner control (see PLUGINS.html, section "Positioners"). + + The new function cSkinDisplayChannel::SetPositioner() can be implemented by skins to + show the user a progress display when the dish is being moved. The default implementation + calls SetMessage() with a string indicating the new position the dish is being moved to. + The LCARS skin shows a progress bar indicating the movement of the dish. + + The new parameters "Site latitude", "Site longitude", "Positioner speed", and + "Positioner swing" in the "Setup/LNB" menu can be used to configure the necessary + values for a steerable dish. + + The cDvbTuner now has a new status tsPositioning, in which it waits until a steerable + dish has reached its target position. Parsing SI data is paused until the target + position has been reached. + - The LCARS skin now shows the source value of the current channel in its channel display. + - Fixed asserting free disk space in the cutter. + - No longer trying to delete old recordings in AssertFreeDiskSpace() if the given + Priority is less than 1. + - Fixed handling LIRC events in case repeated events are lost. + - Fixed a possible crash when shutting down VDR while subtitles are being displayed + (reported by Ville Skyttä). + - cDevice::IsPrimaryDevice() now also checks whether the primary device actually has + a decoder and returns false otherwise. This should improve device allocation on + systems that are only used as a receiver and don't actually display anything. + - Increased the value of MAXRETRIES to 20 to reduce the probability of disturbances + in transfer mode. + - All bonded devices (except for the master) now turn off their LNB power completely + to avoid problems when receiving vertically polarized transponders (suggested by + Manfred Völkel and Oliver Endriss). + - Reverted the change from version 1.5.7 that made all logging go to LOG_ERR (thanks + to Christopher Reimer). + - Added Begin/EndSegmentTransfer() to the EPG handler interface (thanks to Jörg Wendel). + - The code for distributing recordings over several video directories is now + deprecated and disabled by default. + You can re-enable this feature by removing the comment sign ('//') from the beginning + of the line + //#define DEPRECATED_DISTRIBUTED_VIDEODIR // Code enclosed with this macro is ... + in the file videodir.c. Note, though, that this can only be a temporary workaround. + This feature will be completely removed in one of the next developer versions. + Distributing the video directory over several disks was a useful feature in times + when disks were still relatively small, but it also caused serious problems in case + one of the disks failed. Nowadays hard disks come in sizes measured in terabytes, + and tools like "mhddfs" can be used to combine several disks to form one large volume. + A recommended method for a relatively safe disk setup in a VDR system is to use two + 1TB (or larger) disks and use them as a RAID-1 (mirrored). That way, if one disk + fails, you can replace it without data loss. - -- Andrey Pavlenko Mon, 22 Jul 2013 18:17:00 +0400 + -- Andrey Pavlenko Sun, 25 Aug 2013 22:08:24 +0400 diff -Nru vdr-2.0.2-281~6781c8b/device.c vdr-2.1.1-282~5076cfb/device.c --- vdr-2.0.2-281~6781c8b/device.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/device.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.c 2.74.1.1 2013/04/05 10:47:38 kls Exp $ + * $Id: device.c 3.3 2013/08/22 10:28:55 kls Exp $ */ #include "device.h" @@ -118,6 +118,8 @@ DetachAllReceivers(); delete liveSubtitle; delete dvbSubtitleConverter; + if (this == primaryDevice) + primaryDevice = NULL; } bool cDevice::WaitForAllDevicesReady(int Timeout) @@ -362,7 +364,6 @@ void cDevice::Shutdown(void) { deviceHooks.Clear(); - primaryDevice = NULL; for (int i = 0; i < numDevices; i++) { delete device[i]; device[i] = NULL; @@ -665,6 +666,11 @@ return 0; } +const cPositioner *cDevice::Positioner(void) const +{ + return NULL; +} + int cDevice::SignalStrength(void) const { return -1; diff -Nru vdr-2.0.2-281~6781c8b/device.h vdr-2.1.1-282~5076cfb/device.h --- vdr-2.0.2-281~6781c8b/device.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/device.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.h 2.47 2013/02/16 15:20:01 kls Exp $ + * $Id: device.h 3.2 2013/08/22 11:57:34 kls Exp $ */ #ifndef __DEVICE_H @@ -17,6 +17,7 @@ #include "filter.h" #include "nit.h" #include "pat.h" +#include "positioner.h" #include "remux.h" #include "ringbuffer.h" #include "sdt.h" @@ -196,7 +197,7 @@ ///< A derived class must call the MakePrimaryDevice() function of its ///< base class. public: - bool IsPrimaryDevice(void) const { return this == primaryDevice; } + bool IsPrimaryDevice(void) const { return this == primaryDevice && HasDecoder(); } int CardIndex(void) const { return cardIndex; } ///< Returns the card index of this device (0 ... MAXDEVICES - 1). int DeviceNumber(void) const; @@ -273,6 +274,11 @@ ///< actually provide channels must implement this function. ///< The result of this function is used when selecting a device, in order ///< to avoid devices that provide more than one system. + virtual const cPositioner *Positioner(void) const; + ///< Returns a pointer to the positioner (if any) this device has used to + ///< move the satellite dish to the requested position (only applies to DVB-S + ///< devices). If no positioner is involved, or this is not a DVB-S device, + ///< NULL will be returned. virtual int SignalStrength(void) const; ///< Returns the "strength" of the currently received signal. ///< This is a value in the range 0 (no signal at all) through diff -Nru vdr-2.0.2-281~6781c8b/diseqc.c vdr-2.1.1-282~5076cfb/diseqc.c --- vdr-2.0.2-281~6781c8b/diseqc.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/diseqc.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,24 +4,37 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: diseqc.c 2.9.1.1 2013/05/02 09:33:12 kls Exp $ + * $Id: diseqc.c 3.2 2013/08/21 09:26:11 kls Exp $ */ #include "diseqc.h" #include +#include +#include #include "sources.h" #include "thread.h" -static bool ParseDeviceNumbers(const char *s, int &Devices) +#define ALL_DEVICES (~0) // all bits set to '1' +#define MAX_DEVICES 32 // each bit in a 32-bit integer represents one device + +static int CurrentDevices = 0; + +static bool IsDeviceNumbers(const char *s) +{ + return *s && s[strlen(s) - 1] == ':'; +} + +static bool ParseDeviceNumbers(const char *s) { - if (*s && s[strlen(s) - 1] == ':') { + if (IsDeviceNumbers(s)) { + CurrentDevices = 0; const char *p = s; while (*p && *p != ':') { char *t = NULL; int d = strtol(p, &t, 10); p = t; - if (0 < d && d < 31) - Devices |= (1 << d - 1); + if (0 < d && d <= MAX_DEVICES) + CurrentDevices |= (1 << d - 1); else { esyslog("ERROR: invalid device number %d in '%s'", d, s); return false; @@ -31,6 +44,107 @@ return true; } +// --- cDiseqcPositioner ----------------------------------------------------- + +// See http://www.eutelsat.com/files/live/sites/eutelsatv2/files/contributed/satellites/pdf/Diseqc/associated%20docs/positioner_appli_notice.pdf + +cDiseqcPositioner::cDiseqcPositioner(void) +{ + SetCapabilities(pcCanDrive | + pcCanStep | + pcCanHalt | + pcCanSetLimits | + pcCanDisableLimits | + pcCanEnableLimits | + pcCanStorePosition | + pcCanRecalcPositions | + pcCanGotoPosition | + pcCanGotoAngle + ); +} + +void cDiseqcPositioner::SendDiseqc(uint8_t *Codes, int NumCodes) +{ + struct dvb_diseqc_master_cmd cmd; + NumCodes = min(NumCodes, int(sizeof(cmd.msg) - 2)); + cmd.msg_len = 0; + cmd.msg[cmd.msg_len++] = 0xE0; + cmd.msg[cmd.msg_len++] = 0x31; + for (int i = 0; i < NumCodes; i++) + cmd.msg[cmd.msg_len++] = Codes[i]; + CHECK(ioctl(Frontend(), FE_DISEQC_SEND_MASTER_CMD, &cmd)); +} + +void cDiseqcPositioner::Drive(ePositionerDirection Direction) +{ + uint8_t Code[] = { uint8_t(Direction == pdLeft ? 0x68 : 0x69), 0x00 }; + SendDiseqc(Code, 2); +} + +void cDiseqcPositioner::Step(ePositionerDirection Direction, uint Steps) +{ + if (Steps == 0) + return; + uint8_t Code[] = { uint8_t(Direction == pdLeft ? 0x68 : 0x69), 0xFF }; + Code[1] -= min(Steps, uint(0x7F)) - 1; + SendDiseqc(Code, 2); +} + +void cDiseqcPositioner::Halt(void) +{ + uint8_t Code[] = { 0x60 }; + SendDiseqc(Code, 1); +} + +void cDiseqcPositioner::SetLimit(ePositionerDirection Direction) +{ + uint8_t Code[] = { uint8_t(Direction == pdLeft ? 0x66 : 0x67) }; + SendDiseqc(Code, 1); +} + +void cDiseqcPositioner::DisableLimits(void) +{ + uint8_t Code[] = { 0x63 }; + SendDiseqc(Code, 1); +} + +void cDiseqcPositioner::EnableLimits(void) +{ + uint8_t Code[] = { 0x6A, 0x00 }; + SendDiseqc(Code, 2); +} + +void cDiseqcPositioner::StorePosition(uint Number) +{ + uint8_t Code[] = { 0x6A, uint8_t(Number) }; + SendDiseqc(Code, 2); +} + +void cDiseqcPositioner::RecalcPositions(uint Number) +{ + uint8_t Code[] = { 0x6F, uint8_t(Number), 0x00, 0x00 }; + SendDiseqc(Code, 4); +} + +void cDiseqcPositioner::GotoPosition(uint Number, int Longitude) +{ + uint8_t Code[] = { 0x6B, uint8_t(Number) }; + SendDiseqc(Code, 2); + cPositioner::GotoPosition(Number, Longitude); +} + +void cDiseqcPositioner::GotoAngle(int Longitude) +{ + uint8_t Code[] = { 0x6E, 0x00, 0x00 }; + int Angle = CalcHourAngle(Longitude); + int a = abs(Angle); + Code[1] = a / 10 / 16; + Code[2] = a / 10 % 16 * 16 + a % 10 * 16 / 10; + Code[1] |= (Angle < 0) ? 0xE0 : 0xD0; + SendDiseqc(Code, 3); + cPositioner::GotoAngle(Longitude); +} + // --- cScr ------------------------------------------------------------------ cScr::cScr(void) @@ -44,10 +158,9 @@ bool cScr::Parse(const char *s) { - if (!ParseDeviceNumbers(s, devices)) - return false; - if (devices) - return true; + if (IsDeviceNumbers(s)) + return ParseDeviceNumbers(s); + devices = CurrentDevices; bool result = false; int fields = sscanf(s, "%d %u %d", &channel, &userBand, &pin); if (fields == 2 || fields == 3) { @@ -68,16 +181,17 @@ cScrs Scrs; +bool cScrs::Load(const char *FileName, bool AllowComments, bool MustExist) +{ + CurrentDevices = ALL_DEVICES; + return cConfig::Load(FileName, AllowComments, MustExist); +} + cScr *cScrs::GetUnused(int Device) { cMutexLock MutexLock(&mutex); - int Devices = 0; for (cScr *p = First(); p; p = Next(p)) { - if (p->Devices()) { - Devices = p->Devices(); - continue; - } - if (Devices && !(Devices & (1 << Device - 1))) + if (!IsBitSet(p->Devices(), Device - 1)) continue; if (!p->Used()) { p->SetUsed(true); @@ -96,6 +210,7 @@ slof = 0; polarization = 0; lof = 0; + position = -1; scrBank = -1; commands = NULL; parsing = false; @@ -108,10 +223,9 @@ bool cDiseqc::Parse(const char *s) { - if (!ParseDeviceNumbers(s, devices)) - return false; - if (devices) - return true; + if (IsDeviceNumbers(s)) + return ParseDeviceNumbers(s); + devices = CurrentDevices; bool result = false; char *sourcebuf = NULL; int fields = sscanf(s, "%a[^ ] %d %c %d %a[^\n]", &sourcebuf, &slof, &polarization, &lof, &commands); @@ -178,6 +292,28 @@ return NULL; } +const char *cDiseqc::GetPosition(const char *s) const +{ + if (!*s || !isdigit(*s)) { + position = 0; + return s; + } + char *p = NULL; + errno = 0; + int n = strtol(s, &p, 10); + if (!errno && p != s && n >= 0 && n < 0xFF) { + if (parsing) { + if (position < 0) + position = n; + else + esyslog("ERROR: more than one position in '%s'", s - 1); + } + return p; + } + esyslog("ERROR: invalid satellite position in '%s'", s - 1); + return NULL; +} + const char *cDiseqc::GetScrBank(const char *s) const { char *p = NULL; @@ -250,8 +386,12 @@ case 'V': return daVoltage18; case 'A': return daMiniA; case 'B': return daMiniB; - case 'W': *CurrentAction = Wait(*CurrentAction); break; - case 'S': *CurrentAction = GetScrBank(*CurrentAction); break; + case 'W': *CurrentAction = Wait(*CurrentAction); return daWait; + case 'P': *CurrentAction = GetPosition(*CurrentAction); + if (Setup.UsePositioner) + return position ? daPositionN : daPositionA; + break; + case 'S': *CurrentAction = GetScrBank(*CurrentAction); return daScr; case '[': *CurrentAction = GetCodes(*CurrentAction, Codes, MaxCodes); if (*CurrentAction) { if (Scr && Frequency) { @@ -261,7 +401,8 @@ return daCodes; } break; - default: return daNone; + default: esyslog("ERROR: unknown diseqc code '%c'", *(*CurrentAction - 1)); + return daNone; } } return daNone; @@ -271,17 +412,18 @@ cDiseqcs Diseqcs; +bool cDiseqcs::Load(const char *FileName, bool AllowComments, bool MustExist) +{ + CurrentDevices = ALL_DEVICES; + return cConfig::Load(FileName, AllowComments, MustExist); +} + const cDiseqc *cDiseqcs::Get(int Device, int Source, int Frequency, char Polarization, const cScr **Scr) const { - int Devices = 0; for (const cDiseqc *p = First(); p; p = Next(p)) { - if (p->Devices()) { - Devices = p->Devices(); - continue; - } - if (Devices && !(Devices & (1 << Device - 1))) + if (!IsBitSet(p->Devices(), Device - 1)) continue; - if (p->Source() == Source && p->Slof() > Frequency && p->Polarization() == toupper(Polarization)) { + if (cSource::Matches(p->Source(), Source) && p->Slof() > Frequency && p->Polarization() == toupper(Polarization)) { if (p->IsScr() && Scr && !*Scr) { *Scr = Scrs.GetUnused(Device); if (*Scr) diff -Nru vdr-2.0.2-281~6781c8b/diseqc.conf vdr-2.1.1-282~5076cfb/diseqc.conf --- vdr-2.0.2-281~6781c8b/diseqc.conf 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/diseqc.conf 2013-08-25 18:08:12.000000000 +0000 @@ -5,6 +5,9 @@ # satellite slof polarization lof command... # # satellite: one of the 'S' codes defined in sources.conf +# the special value 'S360E' means that this entry uses a positioner +# (command 'P') that can move the dish to any requested satellite +# position withing its range # slof: switch frequency of LNB; the first entry with # an slof greater than the actual transponder # frequency will be used @@ -18,7 +21,9 @@ # V voltage high (18V) # A mini A # B mini B -# Sn Satellite channel routing code sequence for bank n follows +# Pn use positioner to move dish to satellite position n (or to the +# satellite's orbital position, if no position number is given) +# Sn satellite channel routing code sequence for bank n follows # Wnn wait nn milliseconds (nn may be any positive integer number) # [xx ...] hex code sequence (max. 6) # @@ -88,3 +93,10 @@ # S13.0E 99999 V 10600 t V W10 S5 [E0 10 5A 00 00] W10 v # S13.0E 11700 H 9750 t V W10 S6 [E0 10 5A 00 00] W10 v # S13.0E 99999 H 10600 t V W10 S7 [E0 10 5A 00 00] W10 v +# +# Positioner for steerable dish: +# +# S360E 11700 V 9750 t V W20 P W20 t v +# S360E 99999 V 10600 t V W20 P W20 T v +# S360E 11700 H 9750 t V W20 P W20 t V +# S360E 99999 H 10600 t V W20 P W20 T V diff -Nru vdr-2.0.2-281~6781c8b/diseqc.h vdr-2.1.1-282~5076cfb/diseqc.h --- vdr-2.0.2-281~6781c8b/diseqc.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/diseqc.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,15 +4,33 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: diseqc.h 2.5 2011/09/17 13:15:17 kls Exp $ + * $Id: diseqc.h 3.1 2013/06/12 11:52:17 kls Exp $ */ #ifndef __DISEQC_H #define __DISEQC_H #include "config.h" +#include "positioner.h" #include "thread.h" +class cDiseqcPositioner : public cPositioner { +private: + void SendDiseqc(uint8_t *Codes, int NumCodes); +public: + cDiseqcPositioner(void); + virtual void Drive(ePositionerDirection Direction); + virtual void Step(ePositionerDirection Direction, uint Steps = 1); + virtual void Halt(void); + virtual void SetLimit(ePositionerDirection Direction); + virtual void DisableLimits(void); + virtual void EnableLimits(void); + virtual void StorePosition(uint Number); + virtual void RecalcPositions(uint Number); + virtual void GotoPosition(uint Number, int Longitude); + virtual void GotoAngle(int Longitude); + }; + class cScr : public cListObject { private: int devices; @@ -35,6 +53,7 @@ private: cMutex mutex; public: + bool Load(const char *FileName, bool AllowComments = false, bool MustExist = false); cScr *GetUnused(int Device); }; @@ -50,8 +69,11 @@ daVoltage18, daMiniA, daMiniB, + daPositionN, + daPositionA, daScr, daCodes, + daWait, }; enum { MaxDiseqcCodes = 6 }; private: @@ -60,12 +82,14 @@ int slof; char polarization; int lof; + mutable int position; mutable int scrBank; char *commands; bool parsing; uint SetScrFrequency(uint SatFrequency, const cScr *Scr, uint8_t *Codes) const; int SetScrPin(const cScr *Scr, uint8_t *Codes) const; const char *Wait(const char *s) const; + const char *GetPosition(const char *s) const; const char *GetScrBank(const char *s) const; const char *GetCodes(const char *s, uchar *Codes = NULL, uint8_t *MaxCodes = NULL) const; public: @@ -89,16 +113,31 @@ ///< Frequency must be the frequency the tuner will be tuned to, and will be ///< set to the proper SCR frequency upon return (if SCR is used). int Devices(void) const { return devices; } + ///< Returns an integer where each bit represents one of the system's devices. + ///< If a bit is set, this DiSEqC sequence applies to the corresponding device. int Source(void) const { return source; } + ///< Returns the satellite source this DiSEqC sequence applies to. int Slof(void) const { return slof; } + ///< Returns the switch frequency of the LNB this DiSEqC sequence applies to. char Polarization(void) const { return polarization; } + ///< Returns the signal polarization this DiSEqC sequence applies to. int Lof(void) const { return lof; } - bool IsScr() const { return scrBank >= 0; } + ///< Returns the local oscillator frequency of the LNB this DiSEqC sequence applies to. + int Position(void) const { return position; } + ///< Indicates which positioning mode to use in order to move the dish to a given + ///< satellite position. -1 means "no positioning" (i.e. fixed dish); 0 means the + ///< positioner can be moved to any arbitrary satellite position (within its + ///< limits); and a positive number means "move the dish to the position stored + ///< under the given number". + bool IsScr(void) const { return scrBank >= 0; } + ///< Returns true if this DiSEqC sequence uses Satellite Channel Routing. const char *Commands(void) const { return commands; } + ///< Returns a pointer to the actual commands of this DiSEqC sequence. }; class cDiseqcs : public cConfig { public: + bool Load(const char *FileName, bool AllowComments = false, bool MustExist = false); const cDiseqc *Get(int Device, int Source, int Frequency, char Polarization, const cScr **Scr) const; ///< Selects a DiSEqC entry suitable for the given Device and tuning parameters. ///< If this DiSEqC entry requires SCR and the given *Scr is NULL diff -Nru vdr-2.0.2-281~6781c8b/dvbci.c vdr-2.1.1-282~5076cfb/dvbci.c --- vdr-2.0.2-281~6781c8b/dvbci.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbci.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbci.c 2.0 2007/01/04 12:49:10 kls Exp $ + * $Id: dvbci.c 3.0 2007/01/04 12:49:10 kls Exp $ */ #include "dvbci.h" diff -Nru vdr-2.0.2-281~6781c8b/dvbci.h vdr-2.1.1-282~5076cfb/dvbci.h --- vdr-2.0.2-281~6781c8b/dvbci.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbci.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbci.h 2.0 2006/11/26 11:19:42 kls Exp $ + * $Id: dvbci.h 3.0 2006/11/26 11:19:42 kls Exp $ */ #ifndef __DVBCI_H diff -Nru vdr-2.0.2-281~6781c8b/dvbdevice.c vdr-2.1.1-282~5076cfb/dvbdevice.c --- vdr-2.0.2-281~6781c8b/dvbdevice.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbdevice.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.c 2.88.1.1 2013/04/09 13:42:26 kls Exp $ + * $Id: dvbdevice.c 3.3 2013/08/23 09:19:43 kls Exp $ */ #include "dvbdevice.h" @@ -284,7 +284,7 @@ class cDvbTuner : public cThread { private: static cMutex bondMutex; - enum eTunerStatus { tsIdle, tsSet, tsTuned, tsLocked }; + enum eTunerStatus { tsIdle, tsSet, tsPositioning, tsTuned, tsLocked }; int frontendType; const cDvbDevice *device; int fd_frontend; @@ -295,6 +295,9 @@ time_t lastTimeoutReport; cChannel channel; const cDiseqc *lastDiseqc; + int diseqcOffset; + int lastSource; + cPositioner *positioner; const cScr *scr; bool lnbPowerTurnedOn; eTunerStatus tunerStatus; @@ -309,6 +312,7 @@ bool IsBondedMaster(void) const { return !bondedTuner || bondedMaster; } void ClearEventQueue(void) const; bool GetFrontendStatus(fe_status_t &Status) const; + cPositioner *GetPositioner(void); void ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency); void ResetToneAndVoltage(void); bool SetFrontend(void); @@ -325,6 +329,7 @@ bool IsTunedTo(const cChannel *Channel) const; void SetChannel(const cChannel *Channel); bool Locked(int TimeoutMs = 0); + const cPositioner *Positioner(void) const { return positioner; } int GetSignalStrength(void) const; int GetSignalQuality(void) const; }; @@ -343,6 +348,9 @@ lockTimeout = 0; lastTimeoutReport = 0; lastDiseqc = NULL; + diseqcOffset = 0; + lastSource = 0; + positioner = NULL; scr = NULL; lnbPowerTurnedOn = false; tunerStatus = tsIdle; @@ -482,6 +490,7 @@ cMutexLock MutexLock(&mutex); if (!IsTunedTo(Channel)) tunerStatus = tsSet; + diseqcOffset = 0; channel = *Channel; lastTimeoutReport = 0; newSet.Broadcast(); @@ -662,6 +671,15 @@ return f; } +cPositioner *cDvbTuner::GetPositioner(void) +{ + if (!positioner) { + positioner = cPositioner::GetPositioner(); + positioner->SetFrontend(fd_frontend); + } + return positioner; +} + void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency) { if (!lnbPowerTurnedOn) { @@ -673,23 +691,47 @@ Mutex.Lock(); struct dvb_diseqc_master_cmd cmd; const char *CurrentAction = NULL; - for (;;) { + cPositioner *Positioner = NULL; + bool Break = false; + for (int i = 0; !Break; i++) { cmd.msg_len = sizeof(cmd.msg); cDiseqc::eDiseqcActions da = Diseqc->Execute(&CurrentAction, cmd.msg, &cmd.msg_len, scr, Frequency); - if (da == cDiseqc::daNone) + if (da == cDiseqc::daNone) { + diseqcOffset = 0; break; + } + bool d = i >= diseqcOffset; switch (da) { - case cDiseqc::daToneOff: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); break; - case cDiseqc::daToneOn: CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_ON)); break; - case cDiseqc::daVoltage13: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); break; - case cDiseqc::daVoltage18: CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18)); break; - case cDiseqc::daMiniA: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A)); break; - case cDiseqc::daMiniB: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_B)); break; - case cDiseqc::daCodes: CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd)); break; + case cDiseqc::daToneOff: if (d) CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); break; + case cDiseqc::daToneOn: if (d) CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_ON)); break; + case cDiseqc::daVoltage13: if (d) CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); break; + case cDiseqc::daVoltage18: if (d) CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_18)); break; + case cDiseqc::daMiniA: if (d) CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_A)); break; + case cDiseqc::daMiniB: if (d) CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_BURST, SEC_MINI_B)); break; + case cDiseqc::daCodes: if (d) CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd)); break; + case cDiseqc::daPositionN: if ((Positioner = GetPositioner()) != NULL) { + if (d) { + Positioner->GotoPosition(Diseqc->Position(), cSource::Position(channel.Source())); + Break = Positioner->IsMoving(); + } + } + break; + case cDiseqc::daPositionA: if ((Positioner = GetPositioner()) != NULL) { + if (d) { + Positioner->GotoAngle(cSource::Position(channel.Source())); + Break = Positioner->IsMoving(); + } + } + break; + case cDiseqc::daScr: + case cDiseqc::daWait: break; default: esyslog("ERROR: unknown diseqc command %d", da); } + if (Break) + diseqcOffset = i + 1; } - if (scr) + positioner = Positioner; + if (scr && !Break) ResetToneAndVoltage(); // makes sure we don't block the bus! if (Diseqc->IsScr()) Mutex.Unlock(); @@ -697,7 +739,7 @@ void cDvbTuner::ResetToneAndVoltage(void) { - CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); + CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, bondedTuner ? SEC_VOLTAGE_OFF : SEC_VOLTAGE_13)); CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF)); } @@ -752,7 +794,7 @@ if (Setup.DiSEqC) { if (const cDiseqc *diseqc = Diseqcs.Get(device->CardIndex() + 1, channel.Source(), frequency, dtp.Polarization(), &scr)) { frequency -= diseqc->Lof(); - if (diseqc != lastDiseqc || diseqc->IsScr()) { + if (diseqc != lastDiseqc || diseqc->IsScr() || diseqc->Position() >= 0 && channel.Source() != lastSource) { if (IsBondedMaster()) { ExecuteDiseqc(diseqc, &frequency); if (frequency == 0) @@ -761,6 +803,7 @@ else ResetToneAndVoltage(); lastDiseqc = diseqc; + lastSource = channel.Source(); } } else { @@ -877,15 +920,30 @@ int WaitTime = 1000; switch (tunerStatus) { case tsIdle: - break; + break; // we want the TimedWait() below! case tsSet: - tunerStatus = SetFrontend() ? tsTuned : tsIdle; - Timer.Set(tuneTimeout + (scr ? rand() % SCR_RANDOM_TIMEOUT : 0)); + tunerStatus = SetFrontend() ? tsPositioning : tsIdle; continue; + case tsPositioning: + if (positioner) { + if (positioner->IsMoving()) + break; // we want the TimedWait() below! + else if (diseqcOffset) { + lastDiseqc = NULL; + tunerStatus = tsSet; // have it process the rest of the DiSEqC sequence + continue; + } + } + tunerStatus = tsTuned; + Timer.Set(tuneTimeout + (scr ? rand() % SCR_RANDOM_TIMEOUT : 0)); + if (positioner) + continue; + // otherwise run directly into tsTuned... case tsTuned: if (Timer.TimedOut()) { tunerStatus = tsSet; lastDiseqc = NULL; + lastSource = 0; if (time(NULL) - lastTimeoutReport > 60) { // let's not get too many of these isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder()); lastTimeoutReport = time(NULL); @@ -893,10 +951,12 @@ continue; } WaitTime = 100; // allows for a quick change from tsTuned to tsLocked + // run into tsLocked... case tsLocked: if (Status & FE_REINIT) { tunerStatus = tsSet; lastDiseqc = NULL; + lastSource = 0; isyslog("frontend %d/%d was reinitialized", adapter, frontend); lastTimeoutReport = 0; continue; @@ -1357,7 +1417,7 @@ bool cDvbDevice::BondingOk(const cChannel *Channel, bool ConsiderOccupied) const { cMutexLock MutexLock(&bondMutex); - if (bondedDevice) + if (bondedDevice || Positioner()) return dvbTuner && dvbTuner->BondingOk(Channel, ConsiderOccupied); return true; } @@ -1539,6 +1599,11 @@ return numDeliverySystems + numModulations; } +const cPositioner *cDvbDevice::Positioner(void) const +{ + return dvbTuner ? dvbTuner->Positioner() : NULL; +} + int cDvbDevice::SignalStrength(void) const { return dvbTuner ? dvbTuner->GetSignalStrength() : -1; diff -Nru vdr-2.0.2-281~6781c8b/dvbdevice.h vdr-2.1.1-282~5076cfb/dvbdevice.h --- vdr-2.0.2-281~6781c8b/dvbdevice.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbdevice.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbdevice.h 2.29.1.1 2013/04/09 13:43:33 kls Exp $ + * $Id: dvbdevice.h 3.2 2013/06/01 11:36:18 kls Exp $ */ #ifndef __DVBDEVICE_H @@ -233,6 +233,7 @@ virtual bool ProvidesChannel(const cChannel *Channel, int Priority = IDLEPRIORITY, bool *NeedsDetachReceivers = NULL) const; virtual bool ProvidesEIT(void) const; virtual int NumProvidedSystems(void) const; + virtual const cPositioner *Positioner(void) const; virtual int SignalStrength(void) const; virtual int SignalQuality(void) const; virtual const cChannel *GetCurrentlyTunedTransponder(void) const; diff -Nru vdr-2.0.2-281~6781c8b/dvbplayer.c vdr-2.1.1-282~5076cfb/dvbplayer.c --- vdr-2.0.2-281~6781c8b/dvbplayer.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbplayer.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbplayer.c 2.35 2013/03/08 13:44:19 kls Exp $ + * $Id: dvbplayer.c 3.0 2013/03/08 13:44:19 kls Exp $ */ #include "dvbplayer.h" diff -Nru vdr-2.0.2-281~6781c8b/dvbplayer.h vdr-2.1.1-282~5076cfb/dvbplayer.h --- vdr-2.0.2-281~6781c8b/dvbplayer.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbplayer.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: dvbplayer.h 2.1 2012/02/19 11:40:36 kls Exp $ + * $Id: dvbplayer.h 3.0 2012/02/19 11:40:36 kls Exp $ */ #ifndef __DVBPLAYER_H diff -Nru vdr-2.0.2-281~6781c8b/dvbspu.c vdr-2.1.1-282~5076cfb/dvbspu.c --- vdr-2.0.2-281~6781c8b/dvbspu.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbspu.c 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ * * parts of this file are derived from the OMS program. * - * $Id: dvbspu.c 2.11 2013/02/22 15:25:16 kls Exp $ + * $Id: dvbspu.c 3.0 2013/02/22 15:25:16 kls Exp $ */ #include "dvbspu.h" diff -Nru vdr-2.0.2-281~6781c8b/dvbspu.h vdr-2.1.1-282~5076cfb/dvbspu.h --- vdr-2.0.2-281~6781c8b/dvbspu.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbspu.h 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ * * parts of this file are derived from the OMS program. * - * $Id: dvbspu.h 2.6 2013/01/20 10:15:47 kls Exp $ + * $Id: dvbspu.h 3.0 2013/01/20 10:15:47 kls Exp $ */ #ifndef __DVBSPU_H diff -Nru vdr-2.0.2-281~6781c8b/dvbsubtitle.c vdr-2.1.1-282~5076cfb/dvbsubtitle.c --- vdr-2.0.2-281~6781c8b/dvbsubtitle.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbsubtitle.c 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ * Original author: Marco Schluessler * With some input from the "subtitle plugin" by Pekka Virtanen * - * $Id: dvbsubtitle.c 2.34 2013/02/22 15:25:25 kls Exp $ + * $Id: dvbsubtitle.c 3.0 2013/02/22 15:25:25 kls Exp $ */ #include "dvbsubtitle.h" diff -Nru vdr-2.0.2-281~6781c8b/dvbsubtitle.h vdr-2.1.1-282~5076cfb/dvbsubtitle.h --- vdr-2.0.2-281~6781c8b/dvbsubtitle.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/dvbsubtitle.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * * Original author: Marco Schluessler * - * $Id: dvbsubtitle.h 2.7 2012/03/11 13:34:12 kls Exp $ + * $Id: dvbsubtitle.h 3.0 2012/03/11 13:34:12 kls Exp $ */ #ifndef __DVBSUBTITLE_H diff -Nru vdr-2.0.2-281~6781c8b/eit.c vdr-2.1.1-282~5076cfb/eit.c --- vdr-2.0.2-281~6781c8b/eit.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/eit.c 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ * Robert Schneider and Rolf Hakenes . * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg . * - * $Id: eit.c 2.23 2012/12/04 11:10:10 kls Exp $ + * $Id: eit.c 3.1 2013/08/23 10:52:27 kls Exp $ */ #include "eit.h" @@ -46,6 +46,7 @@ return; } + EpgHandlers.BeginSegmentTransfer(channel, OnlyRunningStatus); bool handledExternally = EpgHandlers.HandledExternally(channel); cSchedule *pSchedule = (cSchedule *)Schedules->GetSchedule(channel, true); @@ -310,6 +311,7 @@ Schedules->SetModified(pSchedule); } Channels.Unlock(); + EpgHandlers.EndSegmentTransfer(Modified, OnlyRunningStatus); } // --- cTDT ------------------------------------------------------------------ diff -Nru vdr-2.0.2-281~6781c8b/eit.h vdr-2.1.1-282~5076cfb/eit.h --- vdr-2.0.2-281~6781c8b/eit.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/eit.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: eit.h 2.1 2010/01/03 15:28:34 kls Exp $ + * $Id: eit.h 3.0 2010/01/03 15:28:34 kls Exp $ */ #ifndef __EIT_H diff -Nru vdr-2.0.2-281~6781c8b/eitscan.c vdr-2.1.1-282~5076cfb/eitscan.c --- vdr-2.0.2-281~6781c8b/eitscan.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/eitscan.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: eitscan.c 2.7 2012/04/07 14:39:28 kls Exp $ + * $Id: eitscan.c 3.0 2012/04/07 14:39:28 kls Exp $ */ #include "eitscan.h" diff -Nru vdr-2.0.2-281~6781c8b/eitscan.h vdr-2.1.1-282~5076cfb/eitscan.h --- vdr-2.0.2-281~6781c8b/eitscan.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/eitscan.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: eitscan.h 2.1 2012/03/07 13:54:16 kls Exp $ + * $Id: eitscan.h 3.0 2012/03/07 13:54:16 kls Exp $ */ #ifndef __EITSCAN_H diff -Nru vdr-2.0.2-281~6781c8b/epg.c vdr-2.1.1-282~5076cfb/epg.c --- vdr-2.0.2-281~6781c8b/epg.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/epg.c 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider and Rolf Hakenes . * - * $Id: epg.c 2.23 2013/02/17 14:12:07 kls Exp $ + * $Id: epg.c 3.1 2013/08/23 10:46:33 kls Exp $ */ #include "epg.h" @@ -1537,3 +1537,19 @@ } Schedule->DropOutdated(SegmentStart, SegmentEnd, TableID, Version); } + +void cEpgHandlers::BeginSegmentTransfer(const cChannel *Channel, bool OnlyRunningStatus) +{ + for (cEpgHandler *eh = First(); eh; eh = Next(eh)) { + if (eh->BeginSegmentTransfer(Channel, OnlyRunningStatus)) + return; + } +} + +void cEpgHandlers::EndSegmentTransfer(bool Modified, bool OnlyRunningStatus) +{ + for (cEpgHandler *eh = First(); eh; eh = Next(eh)) { + if (eh->EndSegmentTransfer(Modified, OnlyRunningStatus)) + return; + } +} diff -Nru vdr-2.0.2-281~6781c8b/epg.h vdr-2.1.1-282~5076cfb/epg.h --- vdr-2.0.2-281~6781c8b/epg.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/epg.h 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ * Original version (as used in VDR before 1.3.0) written by * Robert Schneider and Rolf Hakenes . * - * $Id: epg.h 2.15 2012/09/24 12:53:53 kls Exp $ + * $Id: epg.h 3.1 2013/08/23 10:50:05 kls Exp $ */ #ifndef __EPG_H @@ -273,6 +273,12 @@ virtual bool DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version) { return false; } ///< Takes a look at all EPG events between SegmentStart and SegmentEnd and ///< drops outdated events. + virtual bool BeginSegmentTransfer(const cChannel *Channel, bool OnlyRunningStatus) { return false; } + ///< Called directly after IgnoreChannel() before any other handler method is called. + ///< Designed to give handlers the possibility to prepare a database transaction. + virtual bool EndSegmentTransfer(bool Modified, bool OnlyRunningStatus) { return false; } + ///< Called after the segment data has been processed. + ///< At this point handlers should close/commit/rollback any pending database transactions. }; class cEpgHandlers : public cList { @@ -295,6 +301,8 @@ void HandleEvent(cEvent *Event); void SortSchedule(cSchedule *Schedule); void DropOutdated(cSchedule *Schedule, time_t SegmentStart, time_t SegmentEnd, uchar TableID, uchar Version); + void BeginSegmentTransfer(const cChannel *Channel, bool OnlyRunningStatus); + void EndSegmentTransfer(bool Modified, bool OnlyRunningStatus); }; extern cEpgHandlers EpgHandlers; diff -Nru vdr-2.0.2-281~6781c8b/epg2html vdr-2.1.1-282~5076cfb/epg2html --- vdr-2.0.2-281~6781c8b/epg2html 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/epg2html 2013-08-25 18:08:12.000000000 +0000 @@ -12,7 +12,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: epg2html 2.2 2013/03/04 13:02:20 kls Exp $ +# $Id: epg2html 3.0 2013/03/04 13:02:20 kls Exp $ @Index = (); ($Charset = $ENV{LANG}) =~ s/^[^.]*\.?(.*)/$1/; diff -Nru vdr-2.0.2-281~6781c8b/filter.c vdr-2.1.1-282~5076cfb/filter.c --- vdr-2.0.2-281~6781c8b/filter.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/filter.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: filter.c 2.0 2004/01/11 13:31:34 kls Exp $ + * $Id: filter.c 3.0 2004/01/11 13:31:34 kls Exp $ */ #include "filter.h" diff -Nru vdr-2.0.2-281~6781c8b/filter.h vdr-2.1.1-282~5076cfb/filter.h --- vdr-2.0.2-281~6781c8b/filter.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/filter.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: filter.h 2.0 2004/01/11 13:31:59 kls Exp $ + * $Id: filter.h 3.0 2004/01/11 13:31:59 kls Exp $ */ #ifndef __FILTER_H diff -Nru vdr-2.0.2-281~6781c8b/font.c vdr-2.1.1-282~5076cfb/font.c --- vdr-2.0.2-281~6781c8b/font.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/font.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * * BiDi support by Osama Alrawab @2008 Tripoli-Libya. * - * $Id: font.c 2.13.1.1 2013/04/07 14:54:15 kls Exp $ + * $Id: font.c 3.1 2013/04/07 14:42:13 kls Exp $ */ #include "font.h" diff -Nru vdr-2.0.2-281~6781c8b/font.h vdr-2.1.1-282~5076cfb/font.h --- vdr-2.0.2-281~6781c8b/font.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/font.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: font.h 2.7 2013/02/17 13:17:42 kls Exp $ + * $Id: font.h 3.0 2013/02/17 13:17:42 kls Exp $ */ #ifndef __FONT_H diff -Nru vdr-2.0.2-281~6781c8b/i18n.c vdr-2.1.1-282~5076cfb/i18n.c --- vdr-2.0.2-281~6781c8b/i18n.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/i18n.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.c 2.5 2012/09/01 10:53:43 kls Exp $ + * $Id: i18n.c 3.0 2012/09/01 10:53:43 kls Exp $ */ /* diff -Nru vdr-2.0.2-281~6781c8b/i18n.h vdr-2.1.1-282~5076cfb/i18n.h --- vdr-2.0.2-281~6781c8b/i18n.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/i18n.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: i18n.h 2.1 2012/03/11 14:07:45 kls Exp $ + * $Id: i18n.h 3.0 2012/03/11 14:07:45 kls Exp $ */ #ifndef __I18N_H diff -Nru vdr-2.0.2-281~6781c8b/interface.c vdr-2.1.1-282~5076cfb/interface.c --- vdr-2.0.2-281~6781c8b/interface.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/interface.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: interface.c 2.2 2012/11/19 12:21:43 kls Exp $ + * $Id: interface.c 3.0 2012/11/19 12:21:43 kls Exp $ */ #include "interface.h" diff -Nru vdr-2.0.2-281~6781c8b/interface.h vdr-2.1.1-282~5076cfb/interface.h --- vdr-2.0.2-281~6781c8b/interface.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/interface.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: interface.h 2.0 2004/05/01 11:11:13 kls Exp $ + * $Id: interface.h 3.0 2004/05/01 11:11:13 kls Exp $ */ #ifndef __INTERFACE_H diff -Nru vdr-2.0.2-281~6781c8b/keys.c vdr-2.1.1-282~5076cfb/keys.c --- vdr-2.0.2-281~6781c8b/keys.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/keys.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: keys.c 2.2 2012/12/04 12:52:52 kls Exp $ + * $Id: keys.c 3.0 2012/12/04 12:52:52 kls Exp $ */ #include "keys.h" diff -Nru vdr-2.0.2-281~6781c8b/keys.h vdr-2.1.1-282~5076cfb/keys.h --- vdr-2.0.2-281~6781c8b/keys.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/keys.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: keys.h 2.2 2012/12/04 12:51:25 kls Exp $ + * $Id: keys.h 3.0 2012/12/04 12:51:25 kls Exp $ */ #ifndef __KEYS_H diff -Nru vdr-2.0.2-281~6781c8b/libsi/Makefile vdr-2.1.1-282~5076cfb/libsi/Makefile --- vdr-2.0.2-281~6781c8b/libsi/Makefile 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/Makefile 2013-08-25 18:08:12.000000000 +0000 @@ -1,7 +1,7 @@ # # Makefile for a libsi # -# $Id: Makefile 2.4 2012/12/18 13:35:54 kls Exp $ +# $Id: Makefile 3.0 2012/12/18 13:35:54 kls Exp $ ### The archiver options: diff -Nru vdr-2.0.2-281~6781c8b/libsi/descriptor.c vdr-2.1.1-282~5076cfb/libsi/descriptor.c --- vdr-2.0.2-281~6781c8b/libsi/descriptor.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/descriptor.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: descriptor.c 2.4 2012/01/11 11:35:17 kls Exp $ + * $Id: descriptor.c 3.0 2012/01/11 11:35:17 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/descriptor.h vdr-2.1.1-282~5076cfb/libsi/descriptor.h --- vdr-2.0.2-281~6781c8b/libsi/descriptor.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/descriptor.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: descriptor.h 2.4 2012/01/11 11:35:17 kls Exp $ + * $Id: descriptor.h 3.0 2012/01/11 11:35:17 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/gendescr vdr-2.1.1-282~5076cfb/libsi/gendescr --- vdr-2.0.2-281~6781c8b/libsi/gendescr 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/gendescr 2013-08-25 18:08:12.000000000 +0000 @@ -1,6 +1,6 @@ #!/usr/bin/perl -# $Id: gendescr 2.0 2003/12/13 10:40:53 kls Exp $ +# $Id: gendescr 3.0 2003/12/13 10:40:53 kls Exp $ print "Name (ohne ...Descriptor):"; $name=; diff -Nru vdr-2.0.2-281~6781c8b/libsi/headers.h vdr-2.1.1-282~5076cfb/libsi/headers.h --- vdr-2.0.2-281~6781c8b/libsi/headers.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/headers.h 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: headers.h 2.5 2012/06/09 14:37:24 kls Exp $ + * $Id: headers.h 3.0 2012/06/09 14:37:24 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/section.c vdr-2.1.1-282~5076cfb/libsi/section.c --- vdr-2.0.2-281~6781c8b/libsi/section.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/section.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: section.c 2.0 2006/04/14 10:53:44 kls Exp $ + * $Id: section.c 3.0 2006/04/14 10:53:44 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/section.h vdr-2.1.1-282~5076cfb/libsi/section.h --- vdr-2.0.2-281~6781c8b/libsi/section.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/section.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: section.h 2.1 2012/02/26 13:58:26 kls Exp $ + * $Id: section.h 3.0 2012/02/26 13:58:26 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/si.c vdr-2.1.1-282~5076cfb/libsi/si.c --- vdr-2.0.2-281~6781c8b/libsi/si.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/si.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: si.c 2.8 2012/09/29 14:44:20 kls Exp $ + * $Id: si.c 3.0 2012/09/29 14:44:20 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/si.h vdr-2.1.1-282~5076cfb/libsi/si.h --- vdr-2.0.2-281~6781c8b/libsi/si.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/si.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: si.h 2.6 2012/10/15 11:56:06 kls Exp $ + * $Id: si.h 3.0 2012/10/15 11:56:06 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/util.c vdr-2.1.1-282~5076cfb/libsi/util.c --- vdr-2.0.2-281~6781c8b/libsi/util.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/util.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: util.c 2.0 2006/02/18 11:17:50 kls Exp $ + * $Id: util.c 3.0 2006/02/18 11:17:50 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/libsi/util.h vdr-2.1.1-282~5076cfb/libsi/util.h --- vdr-2.0.2-281~6781c8b/libsi/util.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/libsi/util.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * - * $Id: util.h 2.3 2012/02/26 13:58:26 kls Exp $ + * $Id: util.h 3.0 2012/02/26 13:58:26 kls Exp $ * * ***************************************************************************/ diff -Nru vdr-2.0.2-281~6781c8b/lirc.c vdr-2.1.1-282~5076cfb/lirc.c --- vdr-2.0.2-281~6781c8b/lirc.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/lirc.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * * LIRC support added by Carsten Koch 2000-06-16. * - * $Id: lirc.c 2.5 2013/02/11 15:25:42 kls Exp $ + * $Id: lirc.c 3.1 2013/08/22 09:22:14 kls Exp $ */ #include "lirc.h" @@ -111,6 +111,7 @@ else if (LastTime.Elapsed() < (uint)Setup.RcRepeatDelta) continue; // skip same keys coming in too fast else { + pressed = true; repeat = true; timeout = Delta * 10 / 9; } diff -Nru vdr-2.0.2-281~6781c8b/lirc.h vdr-2.1.1-282~5076cfb/lirc.h --- vdr-2.0.2-281~6781c8b/lirc.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/lirc.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: lirc.h 2.0 2006/01/27 16:00:19 kls Exp $ + * $Id: lirc.h 3.0 2006/01/27 16:00:19 kls Exp $ */ #ifndef __LIRC_H diff -Nru vdr-2.0.2-281~6781c8b/menu.c vdr-2.1.1-282~5076cfb/menu.c --- vdr-2.0.2-281~6781c8b/menu.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/menu.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 2.82.1.2 2013/04/27 10:32:28 kls Exp $ + * $Id: menu.c 3.3 2013/08/21 10:45:11 kls Exp $ */ #include "menu.h" @@ -2971,6 +2971,14 @@ } } + Add(new cMenuEditBoolItem(tr("Setup.LNB$Use dish positioner"), &data.UsePositioner)); + if (data.UsePositioner) { + Add(new cMenuEditIntxItem(tr("Setup.LNB$Site latitude (degrees)"), &data.SiteLat, -900, 900, 10, tr("South"), tr("North"))); + Add(new cMenuEditIntxItem(tr("Setup.LNB$Site longitude (degrees)"), &data.SiteLon, -1800, 1800, 10, tr("West"), tr("East"))); + Add(new cMenuEditIntxItem(tr("Setup.LNB$Max. positioner swing (degrees)"), &data.PositionerSwing, 0, 900, 10)); + Add(new cMenuEditIntxItem(tr("Setup.LNB$Positioner speed (degrees/s)"), &data.PositionerSpeed, 1, 1800, 10)); + } + SetCurrent(Get(current)); Display(); } @@ -2978,6 +2986,7 @@ eOSState cMenuSetupLNB::ProcessKey(eKeys Key) { int oldDiSEqC = data.DiSEqC; + int oldUsePositioner = data.UsePositioner; bool DeviceBondingsChanged = false; if (Key == kOk) { cString NewDeviceBondings = satCableNumbers.ToString(); @@ -2986,7 +2995,7 @@ } eOSState state = cMenuSetupBase::ProcessKey(Key); - if (Key != kNone && data.DiSEqC != oldDiSEqC) + if (Key != kNone && (data.DiSEqC != oldDiSEqC || data.UsePositioner != oldUsePositioner)) Setup(); else if (DeviceBondingsChanged) cDvbDevice::BondDevices(data.DeviceBondings); @@ -3625,6 +3634,7 @@ displayChannel = Skins.Current()->DisplayChannel(withInfo); number = 0; timeout = Switched || Setup.TimeoutRequChInfo; + positioner = NULL; channel = Channels.GetByNumber(Number); lastPresent = lastFollowing = NULL; if (channel) { @@ -3646,6 +3656,7 @@ lastTime.Set(); withInfo = Setup.ShowInfoOnChSwitch; displayChannel = Skins.Current()->DisplayChannel(withInfo); + positioner = NULL; channel = Channels.GetByNumber(cDevice::CurrentChannel()); ProcessKey(FirstKey); } @@ -3853,7 +3864,7 @@ return osEnd; } }; - if (!timeout || lastTime.Elapsed() < (uint64_t)(Setup.ChannelInfoTime * 1000)) { + if (positioner || !timeout || lastTime.Elapsed() < (uint64_t)(Setup.ChannelInfoTime * 1000)) { if (Key == kNone && !number && group < 0 && !NewChannel && channel && channel->Number() != cDevice::CurrentChannel()) { // makes sure a channel switch through the SVDRP CHAN command is displayed channel = Channels.GetByNumber(cDevice::CurrentChannel()); @@ -3861,13 +3872,24 @@ lastTime.Set(); } DisplayInfo(); - displayChannel->Flush(); if (NewChannel) { SetTrackDescriptions(NewChannel->Number()); // to make them immediately visible in the channel display Channels.SwitchTo(NewChannel->Number()); SetTrackDescriptions(NewChannel->Number()); // switching the channel has cleared them channel = NewChannel; } + const cPositioner *Positioner = cDevice::ActualDevice()->Positioner(); + bool PositionerMoving = Positioner && Positioner->IsMoving(); + SetNeedsFastResponse(PositionerMoving); + if (!PositionerMoving) { + if (positioner) + lastTime.Set(); // to keep the channel display up a few seconds after the target position has been reached + Positioner = NULL; + } + if (Positioner || positioner) // making sure we call SetPositioner(NULL) if there is a switch from "with" to "without" positioner + displayChannel->SetPositioner(Positioner); + positioner = Positioner; + displayChannel->Flush(); return osContinue; } return osEnd; diff -Nru vdr-2.0.2-281~6781c8b/menu.h vdr-2.1.1-282~5076cfb/menu.h --- vdr-2.0.2-281~6781c8b/menu.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/menu.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.h 2.13 2012/12/07 13:44:13 kls Exp $ + * $Id: menu.h 3.1 2013/06/01 13:44:57 kls Exp $ */ #ifndef __MENU_H @@ -120,6 +120,7 @@ cTimeMs lastTime; int number; bool timeout; + const cPositioner *positioner; cChannel *channel; const cEvent *lastPresent; const cEvent *lastFollowing; diff -Nru vdr-2.0.2-281~6781c8b/menuitems.c vdr-2.1.1-282~5076cfb/menuitems.c --- vdr-2.0.2-281~6781c8b/menuitems.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/menuitems.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menuitems.c 2.16 2013/02/15 14:20:29 kls Exp $ + * $Id: menuitems.c 3.1 2013/05/24 10:26:01 kls Exp $ */ #include "menuitems.h" @@ -51,14 +51,14 @@ helpDisplayed = false; } -bool cMenuEditItem::DisplayHelp(void) +bool cMenuEditItem::DisplayHelp(bool Current) { bool HasHelp = helpRed || helpGreen || helpYellow || helpBlue; - if (HasHelp && !helpDisplayed) { + if (HasHelp && !helpDisplayed && Current) { cSkinDisplay::Current()->SetButtons(helpRed, helpGreen, helpYellow, helpBlue); cStatus::MsgOsdHelpKeys(helpRed, helpGreen, helpYellow, helpBlue); - helpDisplayed = true; } + helpDisplayed = Current; return HasHelp; } @@ -223,6 +223,50 @@ return state; } +// --- cMenuEditIntxItem ----------------------------------------------------- + +cMenuEditIntxItem::cMenuEditIntxItem(const char *Name, int *Value, int Min, int Max, int Factor, const char *NegString, const char *PosString) +:cMenuEditIntItem(Name, Value, Min, Max) +{ + factor = ::max(Factor, 1); + negString = NegString; + posString = PosString; + Set(); +} + +void cMenuEditIntxItem::SetHelpKeys(void) +{ + if (negString && posString) + SetHelp(NULL, (*value < 0) ? posString : negString); +} + +void cMenuEditIntxItem::Set(void) +{ + const char *s = (*value < 0) ? negString : posString; + int v = *value; + if (negString && posString) + v = abs(v); + SetValue(cString::sprintf(s ? "%.*f %s" : "%.*f", factor / 10, double(v) / factor, s)); + SetHelpKeys(); +} + +eOSState cMenuEditIntxItem::ProcessKey(eKeys Key) +{ + eOSState state = cMenuEditIntItem::ProcessKey(Key); + if (state == osUnknown) { + switch (Key) { + case kGreen: if (negString && posString) { + *value = -*value; + Set(); + state = osContinue; + } + break; + default: ; + } + } + return state; +} + // --- cMenuEditPrcItem ------------------------------------------------------ cMenuEditPrcItem::cMenuEditPrcItem(const char *Name, double *Value, double Min, double Max, int Decimals) diff -Nru vdr-2.0.2-281~6781c8b/menuitems.h vdr-2.1.1-282~5076cfb/menuitems.h --- vdr-2.0.2-281~6781c8b/menuitems.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/menuitems.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menuitems.h 2.8 2012/03/13 11:19:11 kls Exp $ + * $Id: menuitems.h 3.1 2013/05/24 10:19:55 kls Exp $ */ #ifndef __MENUITEMS_H @@ -27,7 +27,7 @@ cMenuEditItem(const char *Name); ~cMenuEditItem(); void SetValue(const char *Value); - bool DisplayHelp(void); + bool DisplayHelp(bool Current); }; class cMenuEditIntItem : public cMenuEditItem { @@ -70,6 +70,17 @@ virtual eOSState ProcessKey(eKeys Key); }; +class cMenuEditIntxItem : public cMenuEditIntItem { +private: + int factor; + const char *negString, *posString; + void SetHelpKeys(void); + virtual void Set(void); +public: + cMenuEditIntxItem(const char *Name, int *Value, int Min = INT_MIN, int Max = INT_MAX, int Factor = 1, const char *NegString = NULL, const char *PosString = NULL); + virtual eOSState ProcessKey(eKeys Key); + }; + class cMenuEditPrcItem : public cMenuEditItem { protected: double *value; diff -Nru vdr-2.0.2-281~6781c8b/newplugin vdr-2.1.1-282~5076cfb/newplugin --- vdr-2.0.2-281~6781c8b/newplugin 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/newplugin 2013-08-25 18:08:12.000000000 +0000 @@ -12,7 +12,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: newplugin 2.17.1.1 2013/05/02 10:04:06 kls Exp $ +# $Id: newplugin 3.1 2013/05/02 10:06:09 kls Exp $ $PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin \n"; diff -Nru vdr-2.0.2-281~6781c8b/nit.c vdr-2.1.1-282~5076cfb/nit.c --- vdr-2.0.2-281~6781c8b/nit.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/nit.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: nit.c 2.10 2013/03/07 09:42:29 kls Exp $ + * $Id: nit.c 3.0 2013/03/07 09:42:29 kls Exp $ */ #include "nit.h" diff -Nru vdr-2.0.2-281~6781c8b/nit.h vdr-2.1.1-282~5076cfb/nit.h --- vdr-2.0.2-281~6781c8b/nit.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/nit.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: nit.h 2.0 2007/06/10 08:50:21 kls Exp $ + * $Id: nit.h 3.0 2007/06/10 08:50:21 kls Exp $ */ #ifndef __NIT_H diff -Nru vdr-2.0.2-281~6781c8b/osd.c vdr-2.1.1-282~5076cfb/osd.c --- vdr-2.0.2-281~6781c8b/osd.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/osd.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.c 2.38.1.1 2013/05/18 12:41:48 kls Exp $ + * $Id: osd.c 3.1 2013/05/18 12:33:16 kls Exp $ */ #include "osd.h" diff -Nru vdr-2.0.2-281~6781c8b/osd.h vdr-2.1.1-282~5076cfb/osd.h --- vdr-2.0.2-281~6781c8b/osd.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/osd.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osd.h 2.20 2013/02/12 13:39:08 kls Exp $ + * $Id: osd.h 3.0 2013/02/12 13:39:08 kls Exp $ */ #ifndef __OSD_H diff -Nru vdr-2.0.2-281~6781c8b/osdbase.c vdr-2.1.1-282~5076cfb/osdbase.c --- vdr-2.0.2-281~6781c8b/osdbase.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/osdbase.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.c 2.7 2012/12/07 09:50:47 kls Exp $ + * $Id: osdbase.c 3.1 2013/05/24 10:19:31 kls Exp $ */ #include "osdbase.h" @@ -286,7 +286,7 @@ if (!Current) item->SetFresh(true); // leaving the current item resets 'fresh' if (cMenuEditItem *MenuEditItem = dynamic_cast(item)) { - if (!MenuEditItem->DisplayHelp()) + if (!MenuEditItem->DisplayHelp(Current)) DisplayHelp(); else helpDisplayed = false; diff -Nru vdr-2.0.2-281~6781c8b/osdbase.h vdr-2.1.1-282~5076cfb/osdbase.h --- vdr-2.0.2-281~6781c8b/osdbase.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/osdbase.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: osdbase.h 2.5 2012/12/07 09:49:35 kls Exp $ + * $Id: osdbase.h 3.0 2012/12/07 09:49:35 kls Exp $ */ #ifndef __OSDBASE_H diff -Nru vdr-2.0.2-281~6781c8b/pat.c vdr-2.1.1-282~5076cfb/pat.c --- vdr-2.0.2-281~6781c8b/pat.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/pat.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.c 2.19 2012/11/25 14:12:21 kls Exp $ + * $Id: pat.c 3.0 2012/11/25 14:12:21 kls Exp $ */ #include "pat.h" diff -Nru vdr-2.0.2-281~6781c8b/pat.h vdr-2.1.1-282~5076cfb/pat.h --- vdr-2.0.2-281~6781c8b/pat.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/pat.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: pat.h 2.3 2013/02/16 15:20:24 kls Exp $ + * $Id: pat.h 3.0 2013/02/16 15:20:24 kls Exp $ */ #ifndef __PAT_H diff -Nru vdr-2.0.2-281~6781c8b/player.c vdr-2.1.1-282~5076cfb/player.c --- vdr-2.0.2-281~6781c8b/player.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/player.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: player.c 2.2 2012/04/28 11:52:50 kls Exp $ + * $Id: player.c 3.0 2012/04/28 11:52:50 kls Exp $ */ #include "player.h" diff -Nru vdr-2.0.2-281~6781c8b/player.h vdr-2.1.1-282~5076cfb/player.h --- vdr-2.0.2-281~6781c8b/player.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/player.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: player.h 2.6 2012/04/28 13:04:17 kls Exp $ + * $Id: player.h 3.0 2012/04/28 13:04:17 kls Exp $ */ #ifndef __PLAYER_H diff -Nru vdr-2.0.2-281~6781c8b/plugin.c vdr-2.1.1-282~5076cfb/plugin.c --- vdr-2.0.2-281~6781c8b/plugin.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/plugin.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: plugin.c 2.4 2012/09/01 13:10:27 kls Exp $ + * $Id: plugin.c 3.0 2012/09/01 13:10:27 kls Exp $ */ #include "plugin.h" diff -Nru vdr-2.0.2-281~6781c8b/plugin.h vdr-2.1.1-282~5076cfb/plugin.h --- vdr-2.0.2-281~6781c8b/plugin.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/plugin.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: plugin.h 2.2 2012/09/01 13:08:54 kls Exp $ + * $Id: plugin.h 3.0 2012/09/01 13:08:54 kls Exp $ */ #ifndef __PLUGIN_H diff -Nru vdr-2.0.2-281~6781c8b/po/ar.po vdr-2.1.1-282~5076cfb/po/ar.po --- vdr-2.0.2-281~6781c8b/po/ar.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/ar.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-03 16:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-10-16 11:16-0400\n" "Last-Translator: Osama Alrawab \n" "Language-Team: Arabic \n" @@ -997,6 +997,33 @@ msgid "Setup.LNB$own" msgstr "own" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "اعادة تشغيل الكامة" @@ -1334,6 +1361,10 @@ msgid "PLAY" msgstr "عرض" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG شاشة " diff -Nru vdr-2.0.2-281~6781c8b/po/ca_ES.po vdr-2.1.1-282~5076cfb/po/ca_ES.po --- vdr-2.0.2-281~6781c8b/po/ca_ES.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/ca_ES.po 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-03-02 19:02+0100\n" "Last-Translator: Luca Olivetti \n" "Language-Team: Catalan \n" @@ -996,6 +996,33 @@ msgid "Setup.LNB$own" msgstr "propi" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Reiniciar CAM" @@ -1333,6 +1360,10 @@ msgid "PLAY" msgstr "REPRODUIR" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Quadres ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/cs_CZ.po vdr-2.1.1-282~5076cfb/po/cs_CZ.po --- vdr-2.0.2-281~6781c8b/po/cs_CZ.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/cs_CZ.po 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2010-05-06 11:00+0200\n" "Last-Translator: Aleš Juřík \n" "Language-Team: Czech \n" @@ -996,6 +996,33 @@ msgid "Setup.LNB$own" msgstr "vlastní" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Reset CAMu" @@ -1333,6 +1360,10 @@ msgid "PLAY" msgstr "PŘEHRÁVÁNÍ" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG konzola" diff -Nru vdr-2.0.2-281~6781c8b/po/da_DK.po vdr-2.1.1-282~5076cfb/po/da_DK.po --- vdr-2.0.2-281~6781c8b/po/da_DK.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/da_DK.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2007-08-12 14:17+0200\n" "Last-Translator: Mogens Elneff \n" "Language-Team: Danish \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM nulstil" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG konsol" diff -Nru vdr-2.0.2-281~6781c8b/po/de_DE.po vdr-2.1.1-282~5076cfb/po/de_DE.po --- vdr-2.0.2-281~6781c8b/po/de_DE.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/de_DE.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2010-01-16 16:46+0100\n" "Last-Translator: Klaus Schmidinger \n" "Language-Team: German \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "eigenes" +msgid "Setup.LNB$Use dish positioner" +msgstr "Antennen-Positionierer benutzen" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "Standort Lngengrad" + +msgid "South" +msgstr "Sd" + +msgid "North" +msgstr "Nord" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "Standort Breitengrad" + +msgid "West" +msgstr "West" + +msgid "East" +msgstr "Ost" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "Max. Positionier-Winkel (Grad)" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "Max. Positionier-Geschwindigkeit (Grad/s)" + msgid "CAM reset" msgstr "CAM zurckgesetzt" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "WIEDERGABE" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "Antenne wird auf %.1f gedreht..." + msgid "ST:TNG Panels" msgstr "ST:TNG-Konsolen" diff -Nru vdr-2.0.2-281~6781c8b/po/el_GR.po vdr-2.1.1-282~5076cfb/po/el_GR.po --- vdr-2.0.2-281~6781c8b/po/el_GR.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/el_GR.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2007-08-12 14:17+0200\n" "Last-Translator: Dimitrios Dimitrakos \n" "Language-Team: Greek \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr " ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/es_ES.po vdr-2.1.1-282~5076cfb/po/es_ES.po --- vdr-2.0.2-281~6781c8b/po/es_ES.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/es_ES.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-03-02 19:02+0100\n" "Last-Translator: Luca Olivetti \n" "Language-Team: Spanish \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "propio" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Reset CAM" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "REPRODUCIR" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Paneles ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/et_EE.po vdr-2.1.1-282~5076cfb/po/et_EE.po --- vdr-2.0.2-281~6781c8b/po/et_EE.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/et_EE.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2007-08-12 14:17+0200\n" "Last-Translator: Arthur Konovalov \n" "Language-Team: Estonian \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "oma" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM taaskäivitamine" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "ESITUS" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Panels" diff -Nru vdr-2.0.2-281~6781c8b/po/fi_FI.po vdr-2.1.1-282~5076cfb/po/fi_FI.po --- vdr-2.0.2-281~6781c8b/po/fi_FI.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/fi_FI.po 2013-08-25 18:08:12.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2007-08-15 15:52+0200\n" "Last-Translator: Matti Lehtimäki \n" "Language-Team: Finnish \n" @@ -997,6 +997,33 @@ msgid "Setup.LNB$own" msgstr "oma" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM nollaus" @@ -1334,6 +1361,10 @@ msgid "PLAY" msgstr "TOISTO" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG konsoli" diff -Nru vdr-2.0.2-281~6781c8b/po/fr_FR.po vdr-2.1.1-282~5076cfb/po/fr_FR.po --- vdr-2.0.2-281~6781c8b/po/fr_FR.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/fr_FR.po 2013-08-25 18:08:12.000000000 +0000 @@ -17,7 +17,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-02-24 12:56+0100\n" "Last-Translator: Dominique Plu \n" "Language-Team: French \n" @@ -1003,6 +1003,33 @@ msgid "Setup.LNB$own" msgstr "Propriétaire" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM réinitialisé" @@ -1340,6 +1367,10 @@ msgid "PLAY" msgstr "LECTURE" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Consoles ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/hr_HR.po vdr-2.1.1-282~5076cfb/po/hr_HR.po --- vdr-2.0.2-281~6781c8b/po/hr_HR.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/hr_HR.po 2013-08-25 18:08:12.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-03-17 19:00+0100\n" "Last-Translator: Adrian Caval \n" "Language-Team: Croatian \n" @@ -995,6 +995,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Ponovno pokreni CAM" @@ -1332,6 +1359,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Panele" diff -Nru vdr-2.0.2-281~6781c8b/po/hu_HU.po vdr-2.1.1-282~5076cfb/po/hu_HU.po --- vdr-2.0.2-281~6781c8b/po/hu_HU.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/hu_HU.po 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-03-01 19:22+0200\n" "Last-Translator: István Füley \n" "Language-Team: Hungarian \n" @@ -997,6 +997,33 @@ msgid "Setup.LNB$own" msgstr "saját" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM újraindítás" @@ -1334,6 +1361,10 @@ msgid "PLAY" msgstr "LEJÁTSZÁS" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Konzol" diff -Nru vdr-2.0.2-281~6781c8b/po/it_IT.po vdr-2.1.1-282~5076cfb/po/it_IT.po --- vdr-2.0.2-281~6781c8b/po/it_IT.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/it_IT.po 2013-08-25 18:08:12.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-02-11 23:46+0100\n" "Last-Translator: Diego Pierotto \n" "Language-Team: Italian \n" @@ -1000,6 +1000,33 @@ msgid "Setup.LNB$own" msgstr "propria" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Reimposta la CAM" @@ -1337,6 +1364,10 @@ msgid "PLAY" msgstr "RIPRODUCI" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Consolle ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/lt_LT.po vdr-2.1.1-282~5076cfb/po/lt_LT.po --- vdr-2.0.2-281~6781c8b/po/lt_LT.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/lt_LT.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2010-10-30 11:55+0200\n" "Last-Translator: Valdemaras Pipiras \n" "Language-Team: Lithuanian \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "savas" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Dekodavimo modulis (CAM) perkrautas" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "GROTI" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Skydeliai" diff -Nru vdr-2.0.2-281~6781c8b/po/mk_MK.po vdr-2.1.1-282~5076cfb/po/mk_MK.po --- vdr-2.0.2-281~6781c8b/po/mk_MK.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/mk_MK.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2012-11-19 15:18+0100\n" "Last-Translator: Dimitar Petrovski \n" "Language-Team: Macedonian \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "свој" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Рестартирај CAM" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "ПУШТИ" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Панели" diff -Nru vdr-2.0.2-281~6781c8b/po/nl_NL.po vdr-2.1.1-282~5076cfb/po/nl_NL.po --- vdr-2.0.2-281~6781c8b/po/nl_NL.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/nl_NL.po 2013-08-25 18:08:12.000000000 +0000 @@ -12,7 +12,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-02-26 17:20+0100\n" "Last-Translator: Cedric Dewijs \n" "Language-Team: Dutch \n" @@ -998,6 +998,33 @@ msgid "Setup.LNB$own" msgstr "eigen" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM herstarten" @@ -1335,6 +1362,10 @@ msgid "PLAY" msgstr "AFSPELEN" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Consoles" diff -Nru vdr-2.0.2-281~6781c8b/po/nn_NO.po vdr-2.1.1-282~5076cfb/po/nn_NO.po --- vdr-2.0.2-281~6781c8b/po/nn_NO.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/nn_NO.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2007-08-12 14:17+0200\n" "Last-Translator: Truls Slevigen \n" "Language-Team: Norwegian Nynorsk \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "" diff -Nru vdr-2.0.2-281~6781c8b/po/pl_PL.po vdr-2.1.1-282~5076cfb/po/pl_PL.po --- vdr-2.0.2-281~6781c8b/po/pl_PL.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/pl_PL.po 2013-08-25 18:08:12.000000000 +0000 @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-03-09 12:59+0100\n" "Last-Translator: Marek Nazarko \n" "Language-Team: Polish \n" @@ -995,6 +995,33 @@ msgid "Setup.LNB$own" msgstr "Wasny" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM zresetowany" @@ -1332,6 +1359,10 @@ msgid "PLAY" msgstr "ODTWARZA" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Panel ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/pt_PT.po vdr-2.1.1-282~5076cfb/po/pt_PT.po --- vdr-2.0.2-281~6781c8b/po/pt_PT.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/pt_PT.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2010-03-28 22:49+0100\n" "Last-Translator: Cris Silva \n" "Language-Team: Portuguese \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Reiniciar CAM" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Consola ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/ro_RO.po vdr-2.1.1-282~5076cfb/po/ro_RO.po --- vdr-2.0.2-281~6781c8b/po/ro_RO.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/ro_RO.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-02-09 23:01+0100\n" "Last-Translator: Lucian Muresan \n" "Language-Team: Romanian \n" @@ -995,6 +995,33 @@ msgid "Setup.LNB$own" msgstr "propriu" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Resetare CAM" @@ -1332,6 +1359,10 @@ msgid "PLAY" msgstr "REDARE" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "Cons. ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/ru_RU.po vdr-2.1.1-282~5076cfb/po/ru_RU.po --- vdr-2.0.2-281~6781c8b/po/ru_RU.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/ru_RU.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-03-10 17:13+0100\n" "Last-Translator: Oleg Roitburd \n" "Language-Team: Russian \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM " @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG " diff -Nru vdr-2.0.2-281~6781c8b/po/sk_SK.po vdr-2.1.1-282~5076cfb/po/sk_SK.po --- vdr-2.0.2-281~6781c8b/po/sk_SK.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/sk_SK.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-03 16:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-03-04 21:24+0100\n" "Last-Translator: Milan Hrala \n" "Language-Team: Slovak \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "vlastn" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Resetnutie CAMu" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "PREHRVA SA" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG panely" diff -Nru vdr-2.0.2-281~6781c8b/po/sl_SI.po vdr-2.1.1-282~5076cfb/po/sl_SI.po --- vdr-2.0.2-281~6781c8b/po/sl_SI.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/sl_SI.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-03-04 12:46+0100\n" "Last-Translator: Matjaz Thaler \n" "Language-Team: Slovenian \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "lastni" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Reset CAM-a" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "PREDVAJAJ" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG Konsola" diff -Nru vdr-2.0.2-281~6781c8b/po/sr_RS.po vdr-2.1.1-282~5076cfb/po/sr_RS.po --- vdr-2.0.2-281~6781c8b/po/sr_RS.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/sr_RS.po 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-03-16 15:05+0100\n" "Last-Translator: Zoran Turalija \n" "Language-Team: Serbian \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "sopstven" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Ponovno pokreni CAM" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "REPRODUKCIJA" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG paneli" diff -Nru vdr-2.0.2-281~6781c8b/po/sv_SE.po vdr-2.1.1-282~5076cfb/po/sv_SE.po --- vdr-2.0.2-281~6781c8b/po/sv_SE.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/sv_SE.po 2013-08-25 18:08:12.000000000 +0000 @@ -11,7 +11,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-02-18 17:04+0100\n" "Last-Translator: Richard Lithvall \n" "Language-Team: Swedish \n" @@ -997,6 +997,33 @@ msgid "Setup.LNB$own" msgstr "gare" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM omstart" @@ -1334,6 +1361,10 @@ msgid "PLAY" msgstr "SPELA" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG" diff -Nru vdr-2.0.2-281~6781c8b/po/tr_TR.po vdr-2.1.1-282~5076cfb/po/tr_TR.po --- vdr-2.0.2-281~6781c8b/po/tr_TR.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/tr_TR.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2008-02-28 00:33+0100\n" "Last-Translator: Oktay Yolgeen \n" "Language-Team: Turkish \n" @@ -993,6 +993,33 @@ msgid "Setup.LNB$own" msgstr "" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM sfrland" @@ -1330,6 +1357,10 @@ msgid "PLAY" msgstr "" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG paneli" diff -Nru vdr-2.0.2-281~6781c8b/po/uk_UA.po vdr-2.1.1-282~5076cfb/po/uk_UA.po --- vdr-2.0.2-281~6781c8b/po/uk_UA.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/uk_UA.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-03-04 14:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-02-09 16:00+0100\n" "Last-Translator: Yarema aka Knedlyk \n" "Language-Team: Ukrainian \n" @@ -994,6 +994,33 @@ msgid "Setup.LNB$own" msgstr "власне" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "Перезавантаження CAM" @@ -1331,6 +1358,10 @@ msgid "PLAY" msgstr "ПРОГРАВАННЯ" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG панелі" diff -Nru vdr-2.0.2-281~6781c8b/po/zh_CN.po vdr-2.1.1-282~5076cfb/po/zh_CN.po --- vdr-2.0.2-281~6781c8b/po/zh_CN.po 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/po/zh_CN.po 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: VDR 2.0.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-02-03 16:46+0100\n" +"POT-Creation-Date: 2013-06-10 12:16+0200\n" "PO-Revision-Date: 2013-03-04 14:52+0800\n" "Last-Translator: NFVDR \n" "Language-Team: Chinese (simplified) \n" @@ -995,6 +995,33 @@ msgid "Setup.LNB$own" msgstr "所有" +msgid "Setup.LNB$Use dish positioner" +msgstr "" + +msgid "Setup.LNB$Site latitude (degrees)" +msgstr "" + +msgid "South" +msgstr "" + +msgid "North" +msgstr "" + +msgid "Setup.LNB$Site longitude (degrees)" +msgstr "" + +msgid "West" +msgstr "" + +msgid "East" +msgstr "" + +msgid "Setup.LNB$Max. positioner swing (degrees)" +msgstr "" + +msgid "Setup.LNB$Positioner speed (degrees/s)" +msgstr "" + msgid "CAM reset" msgstr "CAM重置" @@ -1332,6 +1359,10 @@ msgid "PLAY" msgstr "播放" +#, c-format +msgid "Moving dish to %.1f..." +msgstr "" + msgid "ST:TNG Panels" msgstr "ST:TNG 面板" diff -Nru vdr-2.0.2-281~6781c8b/positioner.c vdr-2.1.1-282~5076cfb/positioner.c --- vdr-2.0.2-281~6781c8b/positioner.c 1970-01-01 00:00:00.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/positioner.c 2013-08-25 18:08:12.000000000 +0000 @@ -0,0 +1,140 @@ +/* + * positioner.c: Steerable dish positioning + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * For an explanation (in German) of the theory behind the calculations see + * http://www.vdr-portal.de/board17-developer/board97-vdr-core/p1154305-grundlagen-und-winkelberechnungen-f%C3%BCr-h-h-diseqc-motor-antennenanlagen + * + * $Id: positioner.c 3.1 2013/08/21 11:02:52 kls Exp $ + */ + +#include "positioner.h" +#include +#include "config.h" + +#define SAT_EARTH_RATIO 0.1513 // the Earth's radius, divided by the distance from the Earth's center to the satellite +#define SAT_VISIBILITY_LAT 810 // the absolute latitude beyond which no satellite can be seen (degrees * 10) + +#define RAD(x) ((x) * M_PI / 1800) +#define DEG(x) ((x) * 1800 / M_PI) + +cPositioner *cPositioner::positioner = NULL; + +cPositioner::cPositioner(void) +{ + capabilities = pcCanNothing; + frontend = -1; + targetLongitude = lastLongitude = Setup.PositionerLastLon; + targetHourAngle = lastHourAngle = CalcHourAngle(lastLongitude); + swingTime = 0; + delete positioner; + positioner = this; +} + +cPositioner::~cPositioner() +{ + positioner = NULL; +} + +int cPositioner::NormalizeAngle(int Angle) +{ + while (Angle < -1800) + Angle += 3600; + while (Angle > 1800) + Angle -= 3600; + return Angle; +} + +int cPositioner::CalcHourAngle(int Longitude) +{ + double Delta = RAD(Longitude - Setup.SiteLon); + double Lat = RAD(Setup.SiteLat); + int Sign = Setup.SiteLat >= 0 ? -1 : 1; // angles to the right are positive, angles to the left are negative + return Sign * round(DEG(atan2(sin(Delta), cos(Delta) - cos(Lat) * SAT_EARTH_RATIO))); +} + +int cPositioner::CalcLongitude(int HourAngle) +{ + double Lat = RAD(Setup.SiteLat); + double Lon = RAD(Setup.SiteLon); + double Alpha = RAD(HourAngle); + double Delta = Alpha - asin(sin(M_PI - Alpha) * cos(Lat) * SAT_EARTH_RATIO); + int Sign = Setup.SiteLat >= 0 ? 1 : -1; + return NormalizeAngle(round(DEG(Lon - Sign * Delta))); +} + +int cPositioner::HorizonLongitude(ePositionerDirection Direction) +{ + double Delta; + if (abs(Setup.SiteLat) < SAT_VISIBILITY_LAT) + Delta = acos(SAT_EARTH_RATIO / cos(RAD(Setup.SiteLat))); + else + Delta = RAD(145); + if ((Setup.SiteLat >= 0) != (Direction == pdLeft)) + Delta = -Delta; + return NormalizeAngle(round(DEG(RAD(Setup.SiteLon) + Delta))); +} + +int cPositioner::HardLimitLongitude(ePositionerDirection Direction) const +{ + return CalcLongitude(Direction == pdLeft ? -Setup.PositionerSwing : Setup.PositionerSwing); +} + +void cPositioner::StartMovementTimer(int Longitude) +{ + if (Setup.PositionerSpeed <= 0) + return; + cMutexLock MutexLock(&mutex); + lastLongitude = CurrentLongitude(); // in case the dish was already in motion + targetLongitude = Longitude; + lastHourAngle = CalcHourAngle(lastLongitude); + targetHourAngle = CalcHourAngle(targetLongitude); + swingTime = abs(targetHourAngle - lastHourAngle) * 1000 / Setup.PositionerSpeed; // time (ms) it takes to move the dish from lastHourAngle to targetHourAngle + movementStart.Set(); + Setup.PositionerLastLon = targetLongitude; +} + +void cPositioner::GotoPosition(uint Number, int Longitude) +{ + if (Longitude != targetLongitude) + dsyslog("moving positioner to position %d, longitude %d", Number, Longitude); + StartMovementTimer(Longitude); +} + +void cPositioner::GotoAngle(int Longitude) +{ + if (Longitude != targetLongitude) + dsyslog("moving positioner to longitude %d", Longitude); + StartMovementTimer(Longitude); +} + +int cPositioner::CurrentLongitude(void) const +{ + cMutexLock MutexLock(&mutex); + if (targetLongitude != lastLongitude) { + int Elapsed = movementStart.Elapsed(); // it's important to make this 'int', otherwise the expression below yields funny results + if (swingTime <= Elapsed) + lastLongitude = targetLongitude; + else + return CalcLongitude(lastHourAngle + (targetHourAngle - lastHourAngle) * Elapsed / swingTime); + } + return lastLongitude; +} + +bool cPositioner::IsMoving(void) const +{ + cMutexLock MutexLock(&mutex); + return CurrentLongitude() != targetLongitude; +} + +cPositioner *cPositioner::GetPositioner(void) +{ + return positioner; +} + +void cPositioner::DestroyPositioner(void) +{ + delete positioner; +} diff -Nru vdr-2.0.2-281~6781c8b/positioner.h vdr-2.1.1-282~5076cfb/positioner.h --- vdr-2.0.2-281~6781c8b/positioner.h 1970-01-01 00:00:00.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/positioner.h 2013-08-25 18:08:12.000000000 +0000 @@ -0,0 +1,171 @@ +/* + * positioner.h: Steerable dish positioning + * + * See the main source file 'vdr.c' for copyright information and + * how to reach the author. + * + * $Id: positioner.h 3.1 2013/06/10 14:27:14 kls Exp $ + */ + +#ifndef __POSITIONER_H +#define __POSITIONER_H + +#include "thread.h" +#include "tools.h" + +/// A steerable satellite dish generally points to the south on the northern hemisphere, +/// and to the north on the southern hemisphere (unless you're located directly on the +/// equator, in which case the general direction is "up"). Therefore, moving the dish +/// "east" or "west" means something different on either hemisphere. From the local dish +/// motor's point of view, it makes more sense to speak of turning the dish "left" or +/// "right", which is independent of the actual hemisphere the dish is located in. +/// In the cPositioner class context, when a dish on the northern hemisphere moves "east", +/// it is considered to be moving "left". Imagine standing behind the dish and looking +/// towards the satellites, and clearly "east" is "left". On the southern hemisphere +/// the same move to the "left" would go to the "west". So on the hardware level it is +/// clear what "left" and "right" means. The user interface may present different labels +/// to the viewer, depending on the hemisphere the dish is on. +/// All angles in this context are given in "degrees * 10", which allows for an angular +/// resolution of 0.1 degrees. + +class cPositioner { +private: + mutable cMutex mutex; + static cPositioner *positioner; + int capabilities; + int frontend; // file descriptor of the DVB frontend + mutable int lastLongitude; // the longitude the dish has last been moved to + int targetLongitude; // the longitude the dish is supposed to be moved to + mutable int lastHourAngle; // the hour angle the positioner has last been moved to + int targetHourAngle; // the hour angle the positioner is supposed to be moved to + int swingTime; + cTimeMs movementStart; +protected: + cPositioner(void); + virtual ~cPositioner(); + void SetCapabilities(int Capabilities) { capabilities = Capabilities; } + ///< A derived class shall call this function in its constructor to set the + ///< capability flags it supports. + int Frontend(void) const { return frontend; } + ///< Returns the file descriptor of the DVB frontend the positioner is + ///< connected to. If the positioner is not connected to any DVB device, + ///< -1 will be returned. + static int CalcHourAngle(int Longitude); + ///< Takes the longitude and latitude of the dish location from the system + ///< setup and the given Longitude to calculate the "hour angle" to which to move + ///< the dish to in order to point to the satellite at orbital position Longitude. + ///< An hour angle of zero means the dish shall point directly towards the + ///< celestial equator (which is south on the northern hemisphere, and north on + ///< the southern hemisphere). Negative values mean that the dish needs to be + ///< moved to the left (as seen from behind the dish), while positive values + ///< require a movement to the right. + static int CalcLongitude(int HourAngle); + ///< Returns the longitude of the satellite position the dish points at when the + ///< positioner is moved to the given HourAngle. + void StartMovementTimer(int Longitude); + ///< Starts a timer that estimates how long it will take to move the dish from + ///< the current position to the one given by Longitude. The default implementation + ///< of CurrentLongitude() uses this timer. +public: + enum ePositionerCapabilities { + pcCanNothing = 0x0000, + pcCanDrive = 0x0001, + pcCanStep = 0x0002, + pcCanHalt = 0x0004, + pcCanSetLimits = 0x0008, + pcCanDisableLimits = 0x0010, + pcCanEnableLimits = 0x0020, + pcCanStorePosition = 0x0040, + pcCanRecalcPositions = 0x0080, + pcCanGotoPosition = 0x0100, + pcCanGotoAngle = 0x0200, + }; + enum ePositionerDirection { pdLeft, pdRight }; + static int NormalizeAngle(int Angle); + ///< Normalizes the given Angle into the range -1800...1800. + int Capabilities(void) const { return capabilities; } + ///< Returns a flag word defining all the things this positioner is + ///< capable of. + void SetFrontend(int Frontend) { frontend = Frontend; } + ///< This function is called whenever the positioner is connected to + ///< a DVB frontend. + static int HorizonLongitude(ePositionerDirection Direction); + ///< Returns the longitude of the satellite position that is just at the + ///< horizon when looking in the given Direction. Note that this function + ///< only delivers reasonable values for site latitudes between +/-81 degrees. + ///< Beyond these limits (i.e. near the north or south pole) a constant value + ///< of +/-14.5 degrees (integer value 145) will be returned. + int HardLimitLongitude(ePositionerDirection Direction) const; + ///< Returns the longitude of the positioner's hard limit in the given + ///< Direction. Note that the value returned here may be larger (or smaller, + ///< depending on the Direction) than that returned by HorizonLongitude(), + ///< which would mean that it lies below that horizon. + int LastLongitude(void) const { return lastLongitude; } + ///< Returns the longitude the dish has last been moved to. + int TargetLongitude(void) const { return targetLongitude; } + ///< Returns the longitude the dish is supposed to be moved to. Once the target + ///< longitude has been reached, this is the same as the value returned by + ///< CurrentLongitude(). + virtual cString Error(void) const { return NULL; } + ///< Returns a short, single line string indicating an error condition (if + ///< the positioner is able to report any errors). + ///< NULL means there is no error. + virtual void Drive(ePositionerDirection Direction) {} + ///< Continuously move the dish to the given Direction until Halt() is + ///< called or it hits the soft or hard limit. + virtual void Step(ePositionerDirection Direction, uint Steps = 1) {} + ///< Move the dish the given number of Steps in the given Direction. + ///< The maximum number of steps a particular positioner can do in a single + ///< call may be limited. + ///< A "step" is the smallest possible movement the positioner can make, which + ///< is typically 0.1 degrees. + virtual void Halt(void) {} + ///< Stop any ongoing motion of the dish. + virtual void SetLimit(ePositionerDirection Direction) {} + ///< Set the soft limit of the dish movement in the given Direction to the + ///< current position. + virtual void DisableLimits(void) {} + ///< Disables the soft limits for the dish movement. + virtual void EnableLimits(void) {} + ///< Enables the soft limits for the dish movement. + virtual void StorePosition(uint Number) {} + ///< Store the current position as a satellite position with the given Number. + ///< Number can be in the range 1...255. However, a particular positioner + ///< may only have a limited number of satellite positions it can store. + virtual void RecalcPositions(uint Number) {} + ///< Take the difference betwen the current actual position of the dish and + ///< the position stored with teh given Number, and apply the difference to + ///< all stored positions. + virtual void GotoPosition(uint Number, int Longitude); + ///< Move the dish to the satellite position stored under the given Number. + ///< Number must be one of the values previously used with StorePosition(). + ///< The special value 0 shall move the dish to a "reference position", + ///< which usually is due south (or north, if you're on the southern hemisphere). + ///< Longitude will be used to calculate how long it takes to move the dish + ///< from its current position to the given Longitude. + ///< A derived class must call the base class function to have the target + ///< longitude stored. + virtual void GotoAngle(int Longitude); + ///< Move the dish to the given angular position. Longitude can be in the range + ///< -1800...+1800. A positive sign indicates a position east of Greenwich, + ///< while western positions have a negative sign. The absolute value is in + ///< "degrees * 10", which allows for a resolution of 1/10 of a degree. + ///< A derived class must call the base class function to have the target + ///< longitude stored. + virtual int CurrentLongitude(void) const; + ///< Returns the longitude the dish currently points to. If the dish is in motion, + ///< this may be an estimate based on the angular speed of the positioner. + ///< The default implementation takes the last and target longitude as well as + ///< the rotation speed of the positioner to calculate the estimated current + ///< longitude the dish points to. + virtual bool IsMoving(void) const; + ///< Returns true if the dish is currently moving as a result of a call to + ///< GotoPosition() or GotoAngle(). + static cPositioner *GetPositioner(void); + ///< Returns a previously created positioner. If no plugin has created + ///< a positioner, there will always be the default DiSEqC positioner. + static void DestroyPositioner(void); + ///< Destroys a previously created positioner. + }; + +#endif //__POSITIONER_H diff -Nru vdr-2.0.2-281~6781c8b/receiver.c vdr-2.1.1-282~5076cfb/receiver.c --- vdr-2.0.2-281~6781c8b/receiver.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/receiver.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: receiver.c 2.7 2012/06/02 13:20:38 kls Exp $ + * $Id: receiver.c 3.0 2012/06/02 13:20:38 kls Exp $ */ #include "receiver.h" diff -Nru vdr-2.0.2-281~6781c8b/receiver.h vdr-2.1.1-282~5076cfb/receiver.h --- vdr-2.0.2-281~6781c8b/receiver.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/receiver.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: receiver.h 2.9 2012/09/02 09:27:20 kls Exp $ + * $Id: receiver.h 3.0 2012/09/02 09:27:20 kls Exp $ */ #ifndef __RECEIVER_H diff -Nru vdr-2.0.2-281~6781c8b/recorder.c vdr-2.1.1-282~5076cfb/recorder.c --- vdr-2.0.2-281~6781c8b/recorder.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/recorder.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recorder.c 2.17 2012/09/22 11:53:57 kls Exp $ + * $Id: recorder.c 3.0 2012/09/22 11:53:57 kls Exp $ */ #include "recorder.h" diff -Nru vdr-2.0.2-281~6781c8b/recorder.h vdr-2.1.1-282~5076cfb/recorder.h --- vdr-2.0.2-281~6781c8b/recorder.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/recorder.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recorder.h 2.3 2010/12/27 11:17:04 kls Exp $ + * $Id: recorder.h 3.0 2010/12/27 11:17:04 kls Exp $ */ #ifndef __RECORDER_H diff -Nru vdr-2.0.2-281~6781c8b/recording.c vdr-2.1.1-282~5076cfb/recording.c --- vdr-2.0.2-281~6781c8b/recording.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/recording.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.c 2.91.1.1 2013/04/11 08:20:03 kls Exp $ + * $Id: recording.c 3.2 2013/08/21 13:03:38 kls Exp $ */ #include "recording.h" @@ -178,34 +178,38 @@ return; // the next call will actually remove it } // No "deleted" files to remove, so let's see if we can delete a recording: - isyslog("...no deleted recording found, trying to delete an old recording..."); - cThreadLock RecordingsLock(&Recordings); - if (Recordings.Count()) { - cRecording *r = Recordings.First(); - cRecording *r0 = NULL; - while (r) { - if (r->IsOnVideoDirectoryFileSystem()) { // only delete recordings that will actually increase the free video disk space - if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever - if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority - (r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired - if (r0) { - if (r->Priority() < r0->Priority() || (r->Priority() == r0->Priority() && r->Start() < r0->Start())) - r0 = r; // in any case we delete the one with the lowest priority (or the older one in case of equal priorities) + if (Priority > 0) { + isyslog("...no deleted recording found, trying to delete an old recording..."); + cThreadLock RecordingsLock(&Recordings); + if (Recordings.Count()) { + cRecording *r = Recordings.First(); + cRecording *r0 = NULL; + while (r) { + if (r->IsOnVideoDirectoryFileSystem()) { // only delete recordings that will actually increase the free video disk space + if (!r->IsEdited() && r->Lifetime() < MAXLIFETIME) { // edited recordings and recordings with MAXLIFETIME live forever + if ((r->Lifetime() == 0 && Priority > r->Priority()) || // the recording has no guaranteed lifetime and the new recording has higher priority + (r->Lifetime() > 0 && (time(NULL) - r->Start()) / SECSINDAY >= r->Lifetime())) { // the recording's guaranteed lifetime has expired + if (r0) { + if (r->Priority() < r0->Priority() || (r->Priority() == r0->Priority() && r->Start() < r0->Start())) + r0 = r; // in any case we delete the one with the lowest priority (or the older one in case of equal priorities) + } + else + r0 = r; } - else - r0 = r; } } + r = Recordings.Next(r); } - r = Recordings.Next(r); + if (r0 && r0->Delete()) { + Recordings.Del(r0); + return; } - if (r0 && r0->Delete()) { - Recordings.Del(r0); - return; } + // Unable to free disk space, but there's nothing we can do about that... + isyslog("...no old recording found, giving up"); } - // Unable to free disk space, but there's nothing we can do about that... - isyslog("...no old recording found, giving up"); + else + isyslog("...no deleted recording found, priority %d too low to trigger deleting an old recording", Priority); Skins.QueueMessage(mtWarning, tr("Low disk space!"), 5, -1); } LastFreeDiskCheck = time(NULL); diff -Nru vdr-2.0.2-281~6781c8b/recording.h vdr-2.1.1-282~5076cfb/recording.h --- vdr-2.0.2-281~6781c8b/recording.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/recording.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 2.46 2013/03/04 14:01:23 kls Exp $ + * $Id: recording.h 3.0 2013/03/04 14:01:23 kls Exp $ */ #ifndef __RECORDING_H diff -Nru vdr-2.0.2-281~6781c8b/remote.c vdr-2.1.1-282~5076cfb/remote.c --- vdr-2.0.2-281~6781c8b/remote.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/remote.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remote.c 2.8 2013/02/03 15:44:55 kls Exp $ + * $Id: remote.c 3.0 2013/02/03 15:44:55 kls Exp $ */ #include "remote.h" diff -Nru vdr-2.0.2-281~6781c8b/remote.h vdr-2.1.1-282~5076cfb/remote.h --- vdr-2.0.2-281~6781c8b/remote.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/remote.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remote.h 2.1 2013/02/03 14:34:56 kls Exp $ + * $Id: remote.h 3.0 2013/02/03 14:34:56 kls Exp $ */ #ifndef __REMOTE_H diff -Nru vdr-2.0.2-281~6781c8b/remux.c vdr-2.1.1-282~5076cfb/remux.c --- vdr-2.0.2-281~6781c8b/remux.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/remux.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remux.c 2.75 2013/03/03 10:37:58 kls Exp $ + * $Id: remux.c 3.0 2013/03/03 10:37:58 kls Exp $ */ #include "remux.h" diff -Nru vdr-2.0.2-281~6781c8b/remux.h vdr-2.1.1-282~5076cfb/remux.h --- vdr-2.0.2-281~6781c8b/remux.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/remux.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: remux.h 2.37 2013/01/20 11:43:59 kls Exp $ + * $Id: remux.h 3.0 2013/01/20 11:43:59 kls Exp $ */ #ifndef __REMUX_H diff -Nru vdr-2.0.2-281~6781c8b/ringbuffer.c vdr-2.1.1-282~5076cfb/ringbuffer.c --- vdr-2.0.2-281~6781c8b/ringbuffer.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/ringbuffer.c 2013-08-25 18:08:12.000000000 +0000 @@ -7,7 +7,7 @@ * Parts of this file were inspired by the 'ringbuffy.c' from the * LinuxDVB driver (see linuxtv.org). * - * $Id: ringbuffer.c 2.5 2012/09/22 11:26:49 kls Exp $ + * $Id: ringbuffer.c 3.0 2012/09/22 11:26:49 kls Exp $ */ #include "ringbuffer.h" diff -Nru vdr-2.0.2-281~6781c8b/ringbuffer.h vdr-2.1.1-282~5076cfb/ringbuffer.h --- vdr-2.0.2-281~6781c8b/ringbuffer.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/ringbuffer.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: ringbuffer.h 2.5 2013/02/16 15:20:37 kls Exp $ + * $Id: ringbuffer.h 3.0 2013/02/16 15:20:37 kls Exp $ */ #ifndef __RINGBUFFER_H diff -Nru vdr-2.0.2-281~6781c8b/runvdr.template vdr-2.1.1-282~5076cfb/runvdr.template --- vdr-2.0.2-281~6781c8b/runvdr.template 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/runvdr.template 2013-08-25 18:08:12.000000000 +0000 @@ -20,7 +20,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: runvdr.template 2.2 2011/04/17 12:34:30 kls Exp $ +# $Id: runvdr.template 3.0 2011/04/17 12:34:30 kls Exp $ VDRPRG="./vdr" diff -Nru vdr-2.0.2-281~6781c8b/sdt.c vdr-2.1.1-282~5076cfb/sdt.c --- vdr-2.0.2-281~6781c8b/sdt.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sdt.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sdt.c 2.5 2010/05/16 14:23:21 kls Exp $ + * $Id: sdt.c 3.0 2010/05/16 14:23:21 kls Exp $ */ #include "sdt.h" diff -Nru vdr-2.0.2-281~6781c8b/sdt.h vdr-2.1.1-282~5076cfb/sdt.h --- vdr-2.0.2-281~6781c8b/sdt.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sdt.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sdt.h 2.0 2004/01/05 14:30:14 kls Exp $ + * $Id: sdt.h 3.0 2004/01/05 14:30:14 kls Exp $ */ #ifndef __SDT_H diff -Nru vdr-2.0.2-281~6781c8b/sections.c vdr-2.1.1-282~5076cfb/sections.c --- vdr-2.0.2-281~6781c8b/sections.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sections.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sections.c 2.2 2012/10/04 12:21:59 kls Exp $ + * $Id: sections.c 3.0 2012/10/04 12:21:59 kls Exp $ */ #include "sections.h" diff -Nru vdr-2.0.2-281~6781c8b/sections.h vdr-2.1.1-282~5076cfb/sections.h --- vdr-2.0.2-281~6781c8b/sections.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sections.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sections.h 2.0 2005/08/13 11:23:55 kls Exp $ + * $Id: sections.h 3.0 2005/08/13 11:23:55 kls Exp $ */ #ifndef __SECTIONS_H diff -Nru vdr-2.0.2-281~6781c8b/shutdown.c vdr-2.1.1-282~5076cfb/shutdown.c --- vdr-2.0.2-281~6781c8b/shutdown.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/shutdown.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * * Original version written by Udo Richter . * - * $Id: shutdown.c 2.1 2013/02/18 10:33:26 kls Exp $ + * $Id: shutdown.c 3.0 2013/02/18 10:33:26 kls Exp $ */ #include "shutdown.h" diff -Nru vdr-2.0.2-281~6781c8b/shutdown.h vdr-2.1.1-282~5076cfb/shutdown.h --- vdr-2.0.2-281~6781c8b/shutdown.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/shutdown.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * * Original version written by Udo Richter . * - * $Id: shutdown.h 2.1 2013/02/18 10:35:27 kls Exp $ + * $Id: shutdown.h 3.0 2013/02/18 10:35:27 kls Exp $ */ #ifndef __SHUTDOWN_H diff -Nru vdr-2.0.2-281~6781c8b/skinclassic.c vdr-2.1.1-282~5076cfb/skinclassic.c --- vdr-2.0.2-281~6781c8b/skinclassic.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skinclassic.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinclassic.c 2.10 2013/03/03 15:26:09 kls Exp $ + * $Id: skinclassic.c 3.0 2013/03/03 15:26:09 kls Exp $ */ #include "skinclassic.h" diff -Nru vdr-2.0.2-281~6781c8b/skinclassic.h vdr-2.1.1-282~5076cfb/skinclassic.h --- vdr-2.0.2-281~6781c8b/skinclassic.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skinclassic.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinclassic.h 2.0 2005/01/02 14:38:56 kls Exp $ + * $Id: skinclassic.h 3.0 2005/01/02 14:38:56 kls Exp $ */ #ifndef __SKINCLASSIC_H diff -Nru vdr-2.0.2-281~6781c8b/skinlcars.c vdr-2.1.1-282~5076cfb/skinlcars.c --- vdr-2.0.2-281~6781c8b/skinlcars.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skinlcars.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinlcars.c 2.21.1.1 2013/05/19 12:08:52 kls Exp $ + * $Id: skinlcars.c 3.3 2013/08/18 13:45:36 kls Exp $ */ // "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures, @@ -27,6 +27,7 @@ #include "font.h" #include "menu.h" #include "osd.h" +#include "positioner.h" #include "themes.h" #include "videodir.h" @@ -299,6 +300,44 @@ } } +static void DrawDevicePosition(cOsd *Osd, const cPositioner *Positioner, int x0, int y0, int x1, int y1, int &LastCurrent) +{ + int HorizonLeft = Positioner->HorizonLongitude(cPositioner::pdLeft); + int HorizonRight = Positioner->HorizonLongitude(cPositioner::pdRight); + int HardLimitLeft = cPositioner::NormalizeAngle(HorizonLeft - Positioner->HardLimitLongitude(cPositioner::pdLeft)); + int HardLimitRight = cPositioner::NormalizeAngle(Positioner->HardLimitLongitude(cPositioner::pdRight) - HorizonRight); + int HorizonDelta = cPositioner::NormalizeAngle(HorizonLeft - HorizonRight); + int Current = cPositioner::NormalizeAngle(HorizonLeft - Positioner->CurrentLongitude()); + int Target = cPositioner::NormalizeAngle(HorizonLeft - Positioner->TargetLongitude()); + int d = (y1 - y0) / 2; + int w = x1 - x0 - 2 * d; + int l = max(x0 + d, x0 + d + w * HardLimitLeft / HorizonDelta); + int r = min(x1 - d, x1 - d - w * HardLimitRight / HorizonDelta) - 1; + int c = constrain(x0 + d + w * Current / HorizonDelta, l, r); + int t = constrain(x0 + d + w * Target / HorizonDelta, l, r); + if (c == LastCurrent) + return; + if (c > t) + swap(c, t); + tColor ColorRange, ColorMove; + if (TwoColors) { + ColorRange = Theme.Color(clrChannelFrameBg); + ColorMove = Theme.Color(clrBackground); + } + else { + ColorRange = Theme.Color(clrChannelFrameBg); + ColorMove = Theme.Color(clrDeviceBg); + } + Osd->DrawRectangle(x0, y0, x1 - 1, y1 - 1, Theme.Color(clrBackground)); + Osd->DrawEllipse(l - d, y0, l, y1 - 1, ColorRange, 7); + Osd->DrawRectangle(l, y0, r, y1 - 1, ColorRange); + Osd->DrawEllipse(r, y0, r + d, y1 - 1, ColorRange, 5); + Osd->DrawEllipse(c - d, y0, c, y1 - 1, ColorMove, 7); + Osd->DrawRectangle(c, y0, t, y1 - 1, ColorMove); + Osd->DrawEllipse(t, y0, t + d, y1 - 1, ColorMove, 5); + LastCurrent = c; +} + // --- cSkinLCARSDisplayChannel ---------------------------------------------- class cSkinLCARSDisplayChannel : public cSkinDisplayChannel { @@ -317,6 +356,7 @@ bool initial; cString lastDate; int lastSeen; + int lastCurrentPosition; int lastDeviceNumber; cString lastDeviceType; cCamSlot *lastCamSlot; @@ -336,6 +376,7 @@ virtual void SetChannel(const cChannel *Channel, int Number); virtual void SetEvents(const cEvent *Present, const cEvent *Following); virtual void SetMessage(eMessageType Type, const char *Text); + virtual void SetPositioner(const cPositioner *Positioner); virtual void Flush(void); }; @@ -352,6 +393,7 @@ initial = true; present = NULL; lastSeen = -1; + lastCurrentPosition = -1; lastDeviceNumber = -1; lastCamSlot = NULL; lastSignalStrength = -1; @@ -458,6 +500,8 @@ void cSkinLCARSDisplayChannel::DrawSeen(int Current, int Total) { + if (lastCurrentPosition >= 0) + return; // to not interfere with SetPositioner() int Seen = (Total > 0) ? min(xc07 - xc06, int((xc07 - xc06) * double(Current) / Total)) : 0; if (initial || Seen != lastSeen) { int y0 = yc11 - ShowSeenExtent; @@ -532,8 +576,13 @@ osd->DrawText(xc00, yc00, ChNumber, Theme.Color(clrChannelFrameFg), frameColor, tallFont, xc02 - xc00, yc02 - yc00, taTop | taRight | taBorder); osd->DrawText(xc03, yc00, ChName, Theme.Color(clrChannelName), Theme.Color(clrBackground), tallFont, xi - xc03 - lineHeight, 0, taTop | taLeft); lastSignalDisplay = 0; - if (withInfo) + if (withInfo) { + if (Channel) { + int x = xc00 + (yc10 - yc09); // compensate for the arc + osd->DrawText(x, yc07, cSource::ToString(Channel->Source()), Theme.Color(clrChannelFrameFg), frameColor, cFont::GetFont(fontOsd), xc02 - x, yc10 - yc07, taTop | taRight | taBorder); + } DrawDevice(); + } } void cSkinLCARSDisplayChannel::SetEvents(const cEvent *Present, const cEvent *Following) @@ -587,6 +636,20 @@ } } +void cSkinLCARSDisplayChannel::SetPositioner(const cPositioner *Positioner) +{ + if (Positioner) { + int y0 = yc11 - ShowSeenExtent; + int y1 = yc11 + lineHeight / 2 - Gap / 2; + DrawDevicePosition(osd, Positioner, xc06, y0, xc07, y1, lastCurrentPosition); + } + else { + lastCurrentPosition = -1; + initial = true; // to have DrawSeen() refresh the progress bar + } + return; +} + void cSkinLCARSDisplayChannel::Flush(void) { if (withInfo) { @@ -854,7 +917,7 @@ xb12 = xb08 + w; xb11 = xb12 - Gap; xb13 = xb12 + lineHeight / 2; - xb14 = xb13 + Gap;; + xb14 = xb13 + Gap; // The color buttons in the main menu: int r = lineHeight; @@ -1345,6 +1408,8 @@ if (initial || Channel != lastChannel) { osd->DrawText(xa00, yt00, itoa(Channel->Number()), Theme.Color(clrChannelFrameFg), Theme.Color(clrChannelFrameBg), tallFont, xa02 - xa00, yt02 - yt00, taTop | taRight | taBorder); osd->DrawText(xa03, yt00, Channel->Name(), Theme.Color(clrChannelName), Theme.Color(clrBackground), tallFont, xd00 - xa03, yd01 - yd00, taTop | taLeft); + int x = xa00 + (yc03 - yc02); // compensate for the arc + osd->DrawText(x, yc00, cSource::ToString(Channel->Source()), Theme.Color(clrChannelFrameFg), Theme.Color(clrChannelFrameBg), cFont::GetFont(fontOsd), xa02 - x, yc03 - yc00, taTop | taRight | taBorder); lastChannel = Channel; DrawSeen(0, 0); } diff -Nru vdr-2.0.2-281~6781c8b/skinlcars.h vdr-2.1.1-282~5076cfb/skinlcars.h --- vdr-2.0.2-281~6781c8b/skinlcars.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skinlcars.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinlcars.h 2.1 2012/04/15 13:17:35 kls Exp $ + * $Id: skinlcars.h 3.0 2012/04/15 13:17:35 kls Exp $ */ #ifndef __SKINLCARS_H diff -Nru vdr-2.0.2-281~6781c8b/skins.c vdr-2.1.1-282~5076cfb/skins.c --- vdr-2.0.2-281~6781c8b/skins.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skins.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.c 2.10 2012/06/02 11:44:14 kls Exp $ + * $Id: skins.c 3.1 2013/08/18 12:07:22 kls Exp $ */ #include "skins.h" @@ -63,6 +63,22 @@ current = NULL; } +// --- cSkinDisplayChannel --------------------------------------------------- + +cSkinDisplayChannel::cSkinDisplayChannel(void) +{ + positioner = NULL; +} + +void cSkinDisplayChannel::SetPositioner(const cPositioner *Positioner) +{ + if (positioner && Positioner != positioner) + SetMessage(mtInfo, NULL); + positioner = Positioner; + if (positioner) + SetMessage(mtInfo, cString::sprintf(tr("Moving dish to %.1f..."), double(positioner->TargetLongitude()) / 10)); +} + // --- cSkinDisplayMenu ------------------------------------------------------ cSkinDisplayMenu::cSkinDisplayMenu(void) diff -Nru vdr-2.0.2-281~6781c8b/skins.h vdr-2.1.1-282~5076cfb/skins.h --- vdr-2.0.2-281~6781c8b/skins.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skins.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.h 2.9 2012/12/21 11:09:13 kls Exp $ + * $Id: skins.h 3.1 2013/08/21 10:29:10 kls Exp $ */ #ifndef __SKINS_H @@ -14,6 +14,7 @@ #include "epg.h" #include "keys.h" #include "osd.h" +#include "positioner.h" #include "recording.h" #include "themes.h" #include "thread.h" @@ -52,7 +53,10 @@ ///< This class is used to display the current channel, together with ///< the present and following EPG event. How and to what extent this ///< is done is totally up to the derived class. +private: + const cPositioner *positioner; public: + cSkinDisplayChannel(void); virtual void SetChannel(const cChannel *Channel, int Number) = 0; ///< Sets the current channel to Channel. If Number is not 0, the ///< user is in the process of entering a channel number, which must @@ -65,6 +69,17 @@ ///< to determine, e.g., the colors for displaying the Text. ///< If Text is NULL, any previously displayed message must be removed, and ///< any previous contents overwritten by the message must be restored. + virtual void SetPositioner(const cPositioner *Positioner); + ///< Sets the Positioner used to move the satellite dish. The skin may use the + ///< data provided by Positioner to implement some form of progress display, + ///< since moving the dish may take a while. This function will only be called + ///< if the device receiving the current live channel actually uses a positioner, + ///< and it will be called with NULL once the dish has reached its target + ///< position (or the user switches to a channel that doesn't require positioning + ///< the dish). While the dish is moving, SetPositioner() is called repeatedly, + ///< so the skin has a chance to update the progress display. + ///< The default implementation calls SetMessage() with a text that indicates + ///< that the dish is being moved to a new position. /*TODO SetButtons Red = Video options diff -Nru vdr-2.0.2-281~6781c8b/skinsttng.c vdr-2.1.1-282~5076cfb/skinsttng.c --- vdr-2.0.2-281~6781c8b/skinsttng.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skinsttng.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinsttng.c 2.17 2013/03/03 15:29:28 kls Exp $ + * $Id: skinsttng.c 3.0 2013/03/03 15:29:28 kls Exp $ */ // "Star Trek: The Next Generation"(R) is a registered trademark of Paramount Pictures diff -Nru vdr-2.0.2-281~6781c8b/skinsttng.h vdr-2.1.1-282~5076cfb/skinsttng.h --- vdr-2.0.2-281~6781c8b/skinsttng.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/skinsttng.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skinsttng.h 2.0 2005/01/02 14:39:29 kls Exp $ + * $Id: skinsttng.h 3.0 2005/01/02 14:39:29 kls Exp $ */ #ifndef __SKINSTTNG_H diff -Nru vdr-2.0.2-281~6781c8b/sourceparams.c vdr-2.1.1-282~5076cfb/sourceparams.c --- vdr-2.0.2-281~6781c8b/sourceparams.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sourceparams.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sourceparams.c 1.2 2010/03/06 11:13:39 kls Exp $ + * $Id: sourceparams.c 3.0 2010/03/06 11:13:39 kls Exp $ */ #include "sourceparams.h" diff -Nru vdr-2.0.2-281~6781c8b/sourceparams.h vdr-2.1.1-282~5076cfb/sourceparams.h --- vdr-2.0.2-281~6781c8b/sourceparams.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sourceparams.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sourceparams.h 1.1 2010/02/28 11:58:03 kls Exp $ + * $Id: sourceparams.h 3.0 2010/02/28 11:58:03 kls Exp $ */ #ifndef __SOURCEPARAMS_H diff -Nru vdr-2.0.2-281~6781c8b/sources.c vdr-2.1.1-282~5076cfb/sources.c --- vdr-2.0.2-281~6781c8b/sources.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sources.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sources.c 2.2 2010/02/28 15:15:39 kls Exp $ + * $Id: sources.c 3.4 2013/05/23 10:20:28 kls Exp $ */ #include "sources.h" @@ -37,17 +37,29 @@ return code != stNone && description && *description; } +bool cSource::Matches(int Code1, int Code2) +{ + if (Code1 == (stSat | st_Any)) + return IsSat(Code2); + return Code1 == Code2; +} + +int cSource::Position(int Code) +{ + int n = (Code & st_Pos); + if (n > 0x00007FFF) + n |= 0xFFFF0000; + return n; +} + cString cSource::ToString(int Code) { char buffer[16]; char *q = buffer; *q++ = (Code & st_Mask) >> 24; - int n = (Code & st_Pos); - if (n > 0x00007FFF) - n |= 0xFFFF0000; - if (n) { + if (int n = Position(Code)) { q += snprintf(q, sizeof(buffer) - 2, "%u.%u", abs(n) / 10, abs(n) % 10); // can't simply use "%g" here since the silly 'locale' messes up the decimal point - *q++ = (n < 0) ? 'E' : 'W'; + *q++ = (n < 0) ? 'W' : 'E'; } *q = 0; return buffer; @@ -69,8 +81,8 @@ break; case '.': dot = true; break; - case 'E': neg = true; // fall through to 'W' - case 'W': if (!dot) + case 'W': neg = true; // fall through to 'E' + case 'E': if (!dot) pos *= 10; break; default: esyslog("ERROR: unknown source character '%c'", *s); @@ -84,7 +96,7 @@ return code; } else - esyslog("ERROR: unknown source key '%c'", *s); + esyslog("ERROR: unknown source key '%c'", *s); } return stNone; } @@ -93,9 +105,9 @@ { int code = SourceType; if (SourceType == stSat) { - if (East) + if (!East) Position = -Position; - code |= (Position & st_Pos);; + code |= (Position & st_Pos); } return code; } diff -Nru vdr-2.0.2-281~6781c8b/sources.conf vdr-2.1.1-282~5076cfb/sources.conf --- vdr-2.0.2-281~6781c8b/sources.conf 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sources.conf 2013-08-25 18:08:12.000000000 +0000 @@ -179,6 +179,8 @@ S137W AMC 7 S139W AMC 8 +S360E Any satellite + # Cable C DVB-C diff -Nru vdr-2.0.2-281~6781c8b/sources.h vdr-2.1.1-282~5076cfb/sources.h --- vdr-2.0.2-281~6781c8b/sources.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/sources.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: sources.h 2.4 2012/06/17 11:19:23 kls Exp $ + * $Id: sources.h 3.2 2013/08/21 10:27:32 kls Exp $ */ #ifndef __SOURCES_H @@ -22,6 +22,7 @@ stTerr = ('T' << 24), st_Mask = 0xFF000000, st_Pos = 0x0000FFFF, + st_Any = 0x00000E10, // 3600 - special value indicating "any position" }; private: int code; @@ -31,8 +32,22 @@ cSource(char Source, const char *Description); ~cSource(); int Code(void) const { return code; } + int Position(void) { return Position(code); } + ///< Returns the orbital position of the satellite in case this is a DVB-S + ///< source (zero otherwise). The returned value is in the range -1800...+1800, + ///< except for the special value 3600, which indicates "any position". This is + ///< used with positioners that can move the dish to any requested satellite + ///< within their range. + ///< A positive sign indicates a position east of Greenwich, while western + ///< positions have a negative sign. The absolute value is in "degrees * 10", + ///< which allows for a resolution of 1/10 of a degree. const char *Description(void) const { return description; } bool Parse(const char *s); + static bool Matches(int Code1, int Code2); + ///< Returns true if Code2 matches Code1. This is simply a check whether the + ///< two codes are equal, except for the special case that Code1 is stSat|st_Any, + ///< in which case it matches any Code2 that is stSat. + static int Position(int Code); static char ToChar(int Code) { return (Code & st_Mask) >> 24; } static cString ToString(int Code); static int FromString(const char *s); diff -Nru vdr-2.0.2-281~6781c8b/spu.c vdr-2.1.1-282~5076cfb/spu.c --- vdr-2.0.2-281~6781c8b/spu.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/spu.c 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * This code is distributed under the terms and conditions of the * GNU GENERAL PUBLIC LICENSE. See the file COPYING for details. * - * $Id: spu.c 2.0 2008/02/10 14:06:48 kls Exp $ + * $Id: spu.c 3.0 2008/02/10 14:06:48 kls Exp $ */ #include "spu.h" diff -Nru vdr-2.0.2-281~6781c8b/spu.h vdr-2.1.1-282~5076cfb/spu.h --- vdr-2.0.2-281~6781c8b/spu.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/spu.h 2013-08-25 18:08:12.000000000 +0000 @@ -6,7 +6,7 @@ * This code is distributed under the terms and conditions of the * GNU GENERAL PUBLIC LICENSE. See the file COPYING for details. * - * $Id: spu.h 2.0 2006/04/17 12:48:55 kls Exp $ + * $Id: spu.h 3.0 2006/04/17 12:48:55 kls Exp $ */ #ifndef __SPU_VDR_H diff -Nru vdr-2.0.2-281~6781c8b/status.c vdr-2.1.1-282~5076cfb/status.c --- vdr-2.0.2-281~6781c8b/status.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/status.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: status.c 2.1 2012/03/07 14:17:24 kls Exp $ + * $Id: status.c 3.0 2012/03/07 14:17:24 kls Exp $ */ #include "status.h" diff -Nru vdr-2.0.2-281~6781c8b/status.h vdr-2.1.1-282~5076cfb/status.h --- vdr-2.0.2-281~6781c8b/status.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/status.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: status.h 2.1 2012/03/07 14:16:57 kls Exp $ + * $Id: status.h 3.0 2012/03/07 14:16:57 kls Exp $ */ #ifndef __STATUS_H diff -Nru vdr-2.0.2-281~6781c8b/summary2info vdr-2.1.1-282~5076cfb/summary2info --- vdr-2.0.2-281~6781c8b/summary2info 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/summary2info 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ # See the main source file 'vdr.c' for copyright information and # how to reach the author. # -# $Id: summary2info 2.1 2011/12/04 14:17:35 kls Exp $ +# $Id: summary2info 3.0 2011/12/04 14:17:35 kls Exp $ $VideoDir = $ARGV[0] || die "please provide the name of the video directory\n"; diff -Nru vdr-2.0.2-281~6781c8b/svdrp.c vdr-2.1.1-282~5076cfb/svdrp.c --- vdr-2.0.2-281~6781c8b/svdrp.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/svdrp.c 2013-08-25 18:08:12.000000000 +0000 @@ -10,7 +10,7 @@ * and interact with the Video Disk Recorder - or write a full featured * graphical interface that sits on top of an SVDRP connection. * - * $Id: svdrp.c 2.24 2013/02/17 13:18:01 kls Exp $ + * $Id: svdrp.c 3.0 2013/02/17 13:18:01 kls Exp $ */ #include "svdrp.h" diff -Nru vdr-2.0.2-281~6781c8b/svdrp.h vdr-2.1.1-282~5076cfb/svdrp.h --- vdr-2.0.2-281~6781c8b/svdrp.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/svdrp.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: svdrp.h 2.3 2012/04/26 10:30:06 kls Exp $ + * $Id: svdrp.h 3.0 2012/04/26 10:30:06 kls Exp $ */ #ifndef __SVDRP_H diff -Nru vdr-2.0.2-281~6781c8b/themes.c vdr-2.1.1-282~5076cfb/themes.c --- vdr-2.0.2-281~6781c8b/themes.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/themes.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: themes.c 2.2 2012/02/17 13:57:32 kls Exp $ + * $Id: themes.c 3.0 2012/02/17 13:57:32 kls Exp $ */ #include "themes.h" diff -Nru vdr-2.0.2-281~6781c8b/themes.h vdr-2.1.1-282~5076cfb/themes.h --- vdr-2.0.2-281~6781c8b/themes.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/themes.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: themes.h 2.1 2012/10/07 11:11:43 kls Exp $ + * $Id: themes.h 3.0 2012/10/07 11:11:43 kls Exp $ */ #ifndef __THEMES_H diff -Nru vdr-2.0.2-281~6781c8b/thread.c vdr-2.1.1-282~5076cfb/thread.c --- vdr-2.0.2-281~6781c8b/thread.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/thread.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: thread.c 2.7.1.1 2013/04/11 08:59:26 kls Exp $ + * $Id: thread.c 3.1 2013/04/10 14:37:37 kls Exp $ */ #include "thread.h" diff -Nru vdr-2.0.2-281~6781c8b/thread.h vdr-2.1.1-282~5076cfb/thread.h --- vdr-2.0.2-281~6781c8b/thread.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/thread.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: thread.h 2.4 2013/02/16 15:20:44 kls Exp $ + * $Id: thread.h 3.1 2013/04/11 08:47:31 kls Exp $ */ #ifndef __THREAD_H @@ -182,7 +182,6 @@ ///< Returns true if any I/O throttling object is currently active. }; - // cPipe implements a pipe that closes all unnecessary file descriptors in // the child process. diff -Nru vdr-2.0.2-281~6781c8b/timers.c vdr-2.1.1-282~5076cfb/timers.c --- vdr-2.0.2-281~6781c8b/timers.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/timers.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.c 2.18 2013/03/29 15:37:16 kls Exp $ + * $Id: timers.c 3.0 2013/03/29 15:37:16 kls Exp $ */ #include "timers.h" diff -Nru vdr-2.0.2-281~6781c8b/timers.h vdr-2.1.1-282~5076cfb/timers.h --- vdr-2.0.2-281~6781c8b/timers.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/timers.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: timers.h 2.7 2013/03/11 10:35:53 kls Exp $ + * $Id: timers.h 3.0 2013/03/11 10:35:53 kls Exp $ */ #ifndef __TIMERS_H diff -Nru vdr-2.0.2-281~6781c8b/tools.c vdr-2.1.1-282~5076cfb/tools.c --- vdr-2.0.2-281~6781c8b/tools.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/tools.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.c 2.29 2012/12/08 11:16:30 kls Exp $ + * $Id: tools.c 3.1 2013/05/07 08:48:00 kls Exp $ */ #include "tools.h" @@ -691,12 +691,12 @@ begin = Now() + Ms; } -bool cTimeMs::TimedOut(void) +bool cTimeMs::TimedOut(void) const { return Now() >= begin; } -uint64_t cTimeMs::Elapsed(void) +uint64_t cTimeMs::Elapsed(void) const { return Now() - begin; } diff -Nru vdr-2.0.2-281~6781c8b/tools.h vdr-2.1.1-282~5076cfb/tools.h --- vdr-2.0.2-281~6781c8b/tools.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/tools.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: tools.h 2.24 2013/02/17 13:18:06 kls Exp $ + * $Id: tools.h 3.2 2013/08/23 10:32:51 kls Exp $ */ #ifndef __TOOLS_H @@ -31,9 +31,9 @@ extern int SysLogLevel; -#define esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() ) -#define isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_ERR, a) : void() ) -#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_ERR, a) : void() ) +#define esyslog(a...) void( (SysLogLevel > 0) ? syslog_with_tid(LOG_ERR, a) : void() ) +#define isyslog(a...) void( (SysLogLevel > 1) ? syslog_with_tid(LOG_INFO, a) : void() ) +#define dsyslog(a...) void( (SysLogLevel > 2) ? syslog_with_tid(LOG_DEBUG, a) : void() ) #define LOG_ERROR esyslog("ERROR (%s,%d): %m", __FILE__, __LINE__) #define LOG_ERROR_STR(s) esyslog("ERROR (%s,%d): %s: %m", __FILE__, __LINE__, s) @@ -64,6 +64,8 @@ #define BCDCHARTOINT(x) (10 * ((x & 0xF0) >> 4) + (x & 0xF)) int BCD2INT(int x); +#define IsBitSet(v, b) ((v) & (1 << (b))) // checks if the bit at index b is set in v, where the least significant bit has index 0 + // Unfortunately there are no platform independent macros for unaligned // access, so we do it this way: @@ -330,8 +332,8 @@ ///< time. static uint64_t Now(void); void Set(int Ms = 0); - bool TimedOut(void); - uint64_t Elapsed(void); + bool TimedOut(void) const; + uint64_t Elapsed(void) const; }; class cReadLine { diff -Nru vdr-2.0.2-281~6781c8b/transfer.c vdr-2.1.1-282~5076cfb/transfer.c --- vdr-2.0.2-281~6781c8b/transfer.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/transfer.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: transfer.c 2.8 2013/03/01 09:50:15 kls Exp $ + * $Id: transfer.c 3.1 2013/08/22 12:33:02 kls Exp $ */ #include "transfer.h" @@ -35,7 +35,7 @@ cPlayer::Detach(); } -#define MAXRETRIES 5 // max. number of retries for a single TS packet +#define MAXRETRIES 20 // max. number of retries for a single TS packet #define RETRYWAIT 5 // time (in ms) between two retries void cTransfer::Receive(uchar *Data, int Length) diff -Nru vdr-2.0.2-281~6781c8b/transfer.h vdr-2.1.1-282~5076cfb/transfer.h --- vdr-2.0.2-281~6781c8b/transfer.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/transfer.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: transfer.h 2.4 2013/03/01 09:49:46 kls Exp $ + * $Id: transfer.h 3.0 2013/03/01 09:49:46 kls Exp $ */ #ifndef __TRANSFER_H diff -Nru vdr-2.0.2-281~6781c8b/vdr.1 vdr-2.1.1-282~5076cfb/vdr.1 --- vdr-2.0.2-281~6781c8b/vdr.1 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/vdr.1 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ .\" License as specified in the file COPYING that comes with the .\" vdr distribution. .\" -.\" $Id: vdr.1 2.17 2013/03/15 10:44:54 kls Exp $ +.\" $Id: vdr.1 3.0 2013/03/15 10:44:54 kls Exp $ .\" .TH vdr 1 "31 Mar 2013" "2.0" "Video Disk Recorder" .SH NAME diff -Nru vdr-2.0.2-281~6781c8b/vdr.5 vdr-2.1.1-282~5076cfb/vdr.5 --- vdr-2.0.2-281~6781c8b/vdr.5 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/vdr.5 2013-08-25 18:08:12.000000000 +0000 @@ -8,7 +8,7 @@ .\" License as specified in the file COPYING that comes with the .\" vdr distribution. .\" -.\" $Id: vdr.5 2.36 2013/03/29 10:25:56 kls Exp $ +.\" $Id: vdr.5 3.1 2013/08/11 13:50:42 kls Exp $ .\" .TH vdr 5 "31 Mar 2013" "2.0" "Video Disk Recorder Files" .SH NAME @@ -483,6 +483,7 @@ \fBV\fR@voltage high (18V) \fBA\fR@mini A \fBB\fR@mini B +\fBPn\fR@use positioner to move dish to satellite position n (or to the satellite's orbital position, if no position number is given) \fBSn\fR@Satellite channel routing code sequence for bank n follows \fBWnn\fR@wait nn milliseconds (nn may be any positive integer number) \fB[xx ...]\fR@hex code sequence (max. 6) diff -Nru vdr-2.0.2-281~6781c8b/vdr.c vdr-2.1.1-282~5076cfb/vdr.c --- vdr-2.0.2-281~6781c8b/vdr.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/vdr.c 2013-08-25 18:08:12.000000000 +0000 @@ -22,7 +22,7 @@ * * The project's page is at http://www.tvdr.de * - * $Id: vdr.c 2.57 2013/03/15 10:44:54 kls Exp $ + * $Id: vdr.c 3.1 2013/06/10 14:28:43 kls Exp $ */ #include @@ -800,6 +800,11 @@ if (AudioCommand) new cExternalAudio(AudioCommand); + // Positioner: + + if (!cPositioner::GetPositioner()) // no plugin has created a positioner + new cDiseqcPositioner; + // Channel: if (!cDevice::WaitForAllDevicesReady(DEVICEREADYTIMEOUT)) @@ -1400,6 +1405,7 @@ Setup.Save(); } cDevice::Shutdown(); + cPositioner::DestroyPositioner(); EpgHandlers.Clear(); PluginManager.Shutdown(true); cSchedules::Cleanup(true); diff -Nru vdr-2.0.2-281~6781c8b/videodir.c vdr-2.1.1-282~5076cfb/videodir.c --- vdr-2.0.2-281~6781c8b/videodir.c 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/videodir.c 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: videodir.c 2.4 2012/09/30 12:06:33 kls Exp $ + * $Id: videodir.c 3.1 2013/08/23 12:28:06 kls Exp $ */ #include "videodir.h" @@ -19,6 +19,8 @@ #include "recording.h" #include "tools.h" +//#define DEPRECATED_DISTRIBUTED_VIDEODIR // Code enclosed with this macro is deprecated and will be removed in a future version + const char *VideoDirectory = VIDEODIR; void SetVideoDirectory(const char *Directory) @@ -27,43 +29,60 @@ } class cVideoDirectory { +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR private: char *name, *stored, *adjusted; int length, number, digits; +#endif public: cVideoDirectory(void); ~cVideoDirectory(); int FreeMB(int *UsedMB = NULL); - const char *Name(void) { return name ? name : VideoDirectory; } + const char *Name(void) { return +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR + name ? name : +#endif + VideoDirectory; } +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR const char *Stored(void) { return stored; } int Length(void) { return length; } bool IsDistributed(void) { return name != NULL; } bool Next(void); void Store(void); const char *Adjust(const char *FileName); +#endif }; cVideoDirectory::cVideoDirectory(void) { +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR length = strlen(VideoDirectory); name = (VideoDirectory[length - 1] == '0') ? strdup(VideoDirectory) : NULL; stored = adjusted = NULL; number = -1; digits = 0; +#endif } cVideoDirectory::~cVideoDirectory() { +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR free(name); free(stored); free(adjusted); +#endif } int cVideoDirectory::FreeMB(int *UsedMB) { - return FreeDiskSpaceMB(name ? name : VideoDirectory, UsedMB); + return FreeDiskSpaceMB( +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR + name ? name : +#endif + VideoDirectory, UsedMB); } +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR bool cVideoDirectory::Next(void) { if (name) { @@ -107,6 +126,7 @@ } return NULL; } +#endif cUnbufferedFile *OpenVideoFile(const char *FileName, int Flags) { @@ -118,6 +138,7 @@ errno = ENOENT; // must set 'errno' - any ideas for a better value? return NULL; } +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR // Are we going to create a new file? if ((Flags & O_CREAT) != 0) { cVideoDirectory Dir; @@ -143,6 +164,7 @@ } } } +#endif cUnbufferedFile *File = cUnbufferedFile::Create(ActualFileName, Flags, DEFFILEMODE); if (ActualFileName != FileName) free((char *)ActualFileName); @@ -176,6 +198,7 @@ bool VideoFileSpaceAvailable(int SizeMB) { cVideoDirectory Dir; +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR if (Dir.IsDistributed()) { if (Dir.FreeMB() >= SizeMB * 2) // base directory needs additional space return true; @@ -185,6 +208,7 @@ } return false; } +#endif return Dir.FreeMB() >= SizeMB; } @@ -193,11 +217,15 @@ int free = 0, used = 0; int deleted = DeletedRecordings.TotalFileSizeMB(); cVideoDirectory Dir; +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR do { +#endif int u; free += Dir.FreeMB(&u); used += u; +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR } while (Dir.Next()); +#endif if (deleted > used) deleted = used; // let's not get beyond 100% free += deleted; @@ -232,18 +260,26 @@ void RemoveEmptyVideoDirectories(const char *IgnoreFiles[]) { cVideoDirectory Dir; +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR do { +#endif RemoveEmptyDirectories(Dir.Name(), false, IgnoreFiles); +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR } while (Dir.Next()); +#endif } bool IsOnVideoDirectoryFileSystem(const char *FileName) { cVideoDirectory Dir; +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR do { +#endif if (EntriesOnSameFileSystem(Dir.Name(), FileName)) return true; +#ifdef DEPRECATED_DISTRIBUTED_VIDEODIR } while (Dir.Next()); +#endif return false; } diff -Nru vdr-2.0.2-281~6781c8b/videodir.h vdr-2.1.1-282~5076cfb/videodir.h --- vdr-2.0.2-281~6781c8b/videodir.h 2013-07-22 14:16:52.000000000 +0000 +++ vdr-2.1.1-282~5076cfb/videodir.h 2013-08-25 18:08:12.000000000 +0000 @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: videodir.h 2.3 2012/09/30 11:01:15 kls Exp $ + * $Id: videodir.h 3.0 2012/09/30 11:01:15 kls Exp $ */ #ifndef __VIDEODIR_H