mirror of
				https://github.com/vdr-projects/vdr.git
				synced 2025-03-01 10:50:46 +00:00 
			
		
		
		
	Version 1.7.0
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto. Note that the channels.conf file now supports additional parameters, so you may want to make sure you have a backup of this file in case you need to go back to the previous version of VDR! - Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl). - Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard Nissl). - Improved logging system time changes to avoid problems on slow systems under heavy load (suggested by Helmut Auer). - Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf Ahrenberg). - Fixed initializing the timer's flags in the cTimer copy constructor (thanks to Andreas Mair). - Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald). - Increased the time between checking the CAM status to 500ms to avoid problems with some CAMs (reported by Arthur Konovalov).
This commit is contained in:
		@@ -595,6 +595,8 @@ Helmut Auer <vdr@helmutauer.de>
 | 
			
		||||
 not two hex digits after the '#'
 | 
			
		||||
 for suggesting to suppress the automatic shutdown if the remote control is
 | 
			
		||||
 currently disabled
 | 
			
		||||
 for suggesting to improve logging system time changes to avoid problems on slow
 | 
			
		||||
 systems under heavy load
 | 
			
		||||
 | 
			
		||||
Jeremy Hall <jhall@UU.NET>
 | 
			
		||||
 for fixing an incomplete initialization of the filter parameters in eit.c
 | 
			
		||||
@@ -958,6 +960,7 @@ Andreas Mair <andreas@vdr-developer.org>
 | 
			
		||||
 for making the SVDRP command LSTC list the channels with group separators if the
 | 
			
		||||
 option ':groups' is given
 | 
			
		||||
 for fixing handling 3 and 4 byte UTF-8 symbols in Utf8CharGet()
 | 
			
		||||
 for fixing initializing the timer's flags in the cTimer copy constructor
 | 
			
		||||
 | 
			
		||||
Olivier Jacques <jacquesolivier@hotmail.com>)
 | 
			
		||||
 for translating OSD texts to the French language
 | 
			
		||||
@@ -1050,6 +1053,7 @@ Rolf Ahrenberg <rahrenbe@cc.hut.fi>
 | 
			
		||||
 language
 | 
			
		||||
 for fixing displaying the free disk space when entering the recordings menu where
 | 
			
		||||
 the last replayed recording was in a subdirectory, and pressing Back
 | 
			
		||||
 for setting the thread name, so that it can be seen in 'top -H'
 | 
			
		||||
 | 
			
		||||
Ralf Klueber <ralf.klueber@vodafone.com>
 | 
			
		||||
 for reporting a bug in cutting a recording if there is only a single editing mark
 | 
			
		||||
@@ -1174,6 +1178,8 @@ Reinhard Nissl <rnissl@gmx.de>
 | 
			
		||||
 for reporting an invalid access in the section handler when ending VDR
 | 
			
		||||
 for pointing out that cDevice::Transferring() doesn't return the right value in the
 | 
			
		||||
 early stage of channel switching
 | 
			
		||||
 for fixing displaying transponder data when it is modified
 | 
			
		||||
 for fixing handling the counter in detection of pre 1.3.19 PS data
 | 
			
		||||
 | 
			
		||||
Richard Robson <richard_robson@beeb.net>
 | 
			
		||||
 for reporting freezing replay if a timer starts while in Transfer Mode from the
 | 
			
		||||
@@ -1506,6 +1512,7 @@ Arthur Konovalov <kasjas@hot.ee>
 | 
			
		||||
 for translating OSD texts to the Estonian language
 | 
			
		||||
 for fixing a missing ',' in the Greek OSD texts
 | 
			
		||||
 for fixing a missing ',' in the Swedish OSD texts
 | 
			
		||||
 for reporting problems with CAMs when checking the CAM status too frequently
 | 
			
		||||
 | 
			
		||||
Milos Kapoun <m.kapoun@cra.cz>
 | 
			
		||||
 for suggesting to skip code table info in SI data
 | 
			
		||||
@@ -1702,6 +1709,7 @@ Wolfgang Rohdewald <wolfgang@rohdewald.de>
 | 
			
		||||
 Channel+ or Channel- is pressed
 | 
			
		||||
 for pointing out a possible problem with asprintf() if the return value is not
 | 
			
		||||
 checked
 | 
			
		||||
 for fixing setting the OSD level in the 'osddemo' example
 | 
			
		||||
 | 
			
		||||
Chad Flynt <hoochster@sofnet.com>
 | 
			
		||||
 for suggestions and experiments regarding the buffer reserve in cTransfer
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								HISTORY
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								HISTORY
									
									
									
									
									
								
							@@ -5729,3 +5729,35 @@ Video Disk Recorder Revision History
 | 
			
		||||
- Added Chinese language texts (thanks to Nan Feng).
 | 
			
		||||
- Updated the Portuguese language texts.
 | 
			
		||||
- Added a note about VDR_CHARSET_OVERRIDE to the INSTALL file.
 | 
			
		||||
 | 
			
		||||
2008-04-13: Version 1.7.0
 | 
			
		||||
 | 
			
		||||
- Re-implemented handling of DVB-S2, which first appeared in version 1.5.14, but was
 | 
			
		||||
  revoked in version 1.5.15 in favor of making a stable version 1.6.0. VDR now
 | 
			
		||||
  requires the "multiproto" DVB driver, e.g. from http://jusst.de/hg/multiproto.
 | 
			
		||||
  Note that the channels.conf file now supports additional parameters, so you may
 | 
			
		||||
  want to make sure you have a backup of this file in case you need to go back to
 | 
			
		||||
  the previous version of VDR!
 | 
			
		||||
- Fixed displaying transponder data when it is modified (thanks to Reinhard Nissl).
 | 
			
		||||
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
 | 
			
		||||
  Nissl).
 | 
			
		||||
- Improved logging system time changes to avoid problems on slow systems under
 | 
			
		||||
  heavy load (suggested by Helmut Auer).
 | 
			
		||||
- Now setting the thread name, so that it can be seen in 'top -H' (thanks to Rolf
 | 
			
		||||
  Ahrenberg).
 | 
			
		||||
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
 | 
			
		||||
  Andreas Mair).
 | 
			
		||||
- Fixed setting the OSD level in the 'osddemo' example (thanks to Wolfgang Rohdewald).
 | 
			
		||||
- Increased the time between checking the CAM status to 500ms to avoid problems
 | 
			
		||||
  with some CAMs (reported by Arthur Konovalov).
 | 
			
		||||
 | 
			
		||||
2008-04-13: Version 1.6.0-1
 | 
			
		||||
 | 
			
		||||
- Fixed handling the counter in detection of pre 1.3.19 PS data (thanks to Reinhard
 | 
			
		||||
  Nissl).
 | 
			
		||||
- Improved logging system time changes to avoid problems on slow systems under
 | 
			
		||||
  heavy load (suggested by Helmut Auer).
 | 
			
		||||
- Fixed initializing the timer's flags in the cTimer copy constructor (thanks to
 | 
			
		||||
  Andreas Mair).
 | 
			
		||||
- Increased the time between checking the CAM status to 500ms to avoid problems
 | 
			
		||||
  with some CAMs (reported by Arthur Konovalov).
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
# See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
# how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: Make.config.template 1.16 2008/01/13 12:54:09 kls Exp $
 | 
			
		||||
# $Id: Make.config.template 2.0 2008/01/13 12:54:09 kls Exp $
 | 
			
		||||
 | 
			
		||||
### The C compiler and options:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								Makefile
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
# See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
# how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.113 2008/02/29 21:43:03 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/02/29 21:43:03 kls Exp $
 | 
			
		||||
 | 
			
		||||
.DELETE_ON_ERROR:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.22 2008/01/13 12:59:58 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 12:59:58 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: hello.c 1.15 2008/03/18 17:13:25 kls Exp $
 | 
			
		||||
 * $Id: hello.c 2.0 2008/03/18 17:13:25 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <getopt.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -17,3 +17,7 @@ VDR Plugin 'osddemo' Revision History
 | 
			
		||||
 | 
			
		||||
- Moved the "all" target in the Makefile before the "Implicit rules",
 | 
			
		||||
  so that a plain "make" will compile everything.
 | 
			
		||||
 | 
			
		||||
2008-04-13: Version 0.1.3
 | 
			
		||||
 | 
			
		||||
- Fixed setting the OSD level (thanks to Wolfgang Rohdewald).
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.11 2008/01/13 13:00:01 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 13:00:01 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,12 +3,12 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: osddemo.c 1.4 2007/08/15 13:17:55 kls Exp $
 | 
			
		||||
 * $Id: osddemo.c 2.1 2008/04/13 12:59:57 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <vdr/plugin.h>
 | 
			
		||||
 | 
			
		||||
static const char *VERSION        = "0.1.2";
 | 
			
		||||
static const char *VERSION        = "0.1.3";
 | 
			
		||||
static const char *DESCRIPTION    = "Demo of arbitrary OSD setup";
 | 
			
		||||
static const char *MAINMENUENTRY  = "Osd Demo";
 | 
			
		||||
 | 
			
		||||
@@ -41,7 +41,7 @@ cLineGame::~cLineGame()
 | 
			
		||||
 | 
			
		||||
void cLineGame::Show(void)
 | 
			
		||||
{
 | 
			
		||||
  osd = cOsdProvider::NewOsd(100, 50);
 | 
			
		||||
  osd = cOsdProvider::NewOsd(100, 50, 50);
 | 
			
		||||
  if (osd) {
 | 
			
		||||
     tArea Area = { 0, 0, 99, 199,  4 };
 | 
			
		||||
     osd->SetAreas(&Area, 1);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.2 2008/01/13 13:00:04 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 13:00:04 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: entry.c 1.3 2008/02/17 13:42:34 kls Exp $
 | 
			
		||||
 * $Id: entry.c 2.0 2008/02/17 13:42:34 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "entry.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: entry.h 1.1 2008/01/06 12:30:50 kls Exp $
 | 
			
		||||
 * $Id: entry.h 2.0 2008/01/06 12:30:50 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _ENTRY_H
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: menu.c 1.1 2008/01/13 11:35:18 kls Exp $
 | 
			
		||||
 * $Id: menu.c 2.0 2008/01/13 11:35:18 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "menu.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: menu.h 1.1 2008/01/12 11:22:52 kls Exp $
 | 
			
		||||
 * $Id: menu.h 2.0 2008/01/12 11:22:52 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _MENU_H
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
#
 | 
			
		||||
# See the README file for copyright information and how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: pic2mpg 1.4 2008/02/29 14:34:22 kls Exp $
 | 
			
		||||
# $Id: pic2mpg 2.0 2008/02/29 14:34:22 kls Exp $
 | 
			
		||||
 | 
			
		||||
## TODO implement HDTV (1920 x 1080)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: pictures.c 1.7 2008/03/14 12:57:19 kls Exp $
 | 
			
		||||
 * $Id: pictures.c 2.0 2008/03/14 12:57:19 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <getopt.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: player.c 1.3 2008/02/09 12:13:10 kls Exp $
 | 
			
		||||
 * $Id: player.c 2.0 2008/02/09 12:13:10 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "player.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: player.h 1.1 2008/01/12 16:21:57 kls Exp $
 | 
			
		||||
 * $Id: player.h 2.0 2008/01/12 16:21:57 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef _PLAYER_H
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.10 2008/01/13 13:00:07 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 13:00:07 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: svccli.c 1.2 2007/08/15 13:18:08 kls Exp $
 | 
			
		||||
 * $Id: svccli.c 2.0 2007/08/15 13:18:08 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: svcsvr.c 1.2 2007/08/15 13:18:59 kls Exp $
 | 
			
		||||
 * $Id: svcsvr.c 2.0 2007/08/15 13:18:59 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.15 2008/01/19 11:40:33 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/19 11:40:33 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								PLUGINS/src/skincurses/po/it_IT.po
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										0
									
								
								PLUGINS/src/skincurses/po/it_IT.po
									
									
									
									
									
										
										
										Executable file → Normal file
									
								
							@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: skincurses.c 1.23 2008/03/14 12:57:14 kls Exp $
 | 
			
		||||
 * $Id: skincurses.c 2.0 2008/03/14 12:57:14 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <ncurses.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.11 2008/01/13 13:00:16 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 13:00:16 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
#
 | 
			
		||||
# See the README file for copyright information and how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: getskyepg.pl 1.7 2008/03/22 10:17:42 kls Exp $
 | 
			
		||||
# $Id: getskyepg.pl 2.0 2008/03/22 10:17:42 kls Exp $
 | 
			
		||||
 | 
			
		||||
use Getopt::Std;
 | 
			
		||||
use Time::Local;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: sky.c 1.15 2008/03/22 10:19:32 kls Exp $
 | 
			
		||||
 * $Id: sky.c 2.0 2008/03/22 10:19:32 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <sys/socket.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.15 2008/01/13 13:00:18 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 13:00:18 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: status.c 1.10 2008/02/16 15:41:05 kls Exp $
 | 
			
		||||
 * $Id: status.c 2.0 2008/02/16 15:41:05 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <vdr/plugin.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a Video Disk Recorder plugin
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.9 2008/01/13 13:00:20 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2008/01/13 13:00:20 kls Exp $
 | 
			
		||||
 | 
			
		||||
# The official name of this plugin.
 | 
			
		||||
# This name will be used in the '-P...' option of VDR to load the plugin.
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * See the README file for copyright information and how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: svdrpdemo.c 1.3 2007/08/15 13:19:57 kls Exp $
 | 
			
		||||
 * $Id: svdrpdemo.c 2.0 2007/08/15 13:19:57 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <vdr/plugin.h>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								audio.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								audio.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: audio.c 1.5 2006/05/28 15:03:24 kls Exp $
 | 
			
		||||
 * $Id: audio.c 2.0 2006/05/28 15:03:24 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "audio.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								audio.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								audio.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: audio.h 1.3 2005/02/12 12:20:19 kls Exp $
 | 
			
		||||
 * $Id: audio.h 2.0 2005/02/12 12:20:19 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __AUDIO_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										225
									
								
								channels.c
									
									
									
									
									
								
							
							
						
						
									
										225
									
								
								channels.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: channels.c 1.60 2008/03/05 16:42:50 kls Exp $
 | 
			
		||||
 * $Id: channels.c 2.2 2008/04/12 13:49:12 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "channels.h"
 | 
			
		||||
@@ -21,67 +21,114 @@
 | 
			
		||||
// --- Channel Parameter Maps ------------------------------------------------
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap InversionValues[] = {
 | 
			
		||||
  {   0, INVERSION_OFF },
 | 
			
		||||
  {   1, INVERSION_ON },
 | 
			
		||||
  { 999, INVERSION_AUTO },
 | 
			
		||||
  {   0, DVBFE_INVERSION_OFF, trNOOP("off") },
 | 
			
		||||
  {   1, DVBFE_INVERSION_ON,  trNOOP("on") },
 | 
			
		||||
  { 999, DVBFE_INVERSION_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap BandwidthValues[] = {
 | 
			
		||||
  {   6, BANDWIDTH_6_MHZ },
 | 
			
		||||
  {   7, BANDWIDTH_7_MHZ },
 | 
			
		||||
  {   8, BANDWIDTH_8_MHZ },
 | 
			
		||||
  { 999, BANDWIDTH_AUTO },
 | 
			
		||||
  {   5, DVBFE_BANDWIDTH_5_MHZ, "5 MHz" },
 | 
			
		||||
  {   6, DVBFE_BANDWIDTH_6_MHZ, "6 MHz" },
 | 
			
		||||
  {   7, DVBFE_BANDWIDTH_7_MHZ, "7 MHz" },
 | 
			
		||||
  {   8, DVBFE_BANDWIDTH_8_MHZ, "8 MHz" },
 | 
			
		||||
  { 999, DVBFE_BANDWIDTH_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap CoderateValues[] = {
 | 
			
		||||
  {   0, FEC_NONE },
 | 
			
		||||
  {  12, FEC_1_2 },
 | 
			
		||||
  {  23, FEC_2_3 },
 | 
			
		||||
  {  34, FEC_3_4 },
 | 
			
		||||
  {  45, FEC_4_5 },
 | 
			
		||||
  {  56, FEC_5_6 },
 | 
			
		||||
  {  67, FEC_6_7 },
 | 
			
		||||
  {  78, FEC_7_8 },
 | 
			
		||||
  {  89, FEC_8_9 },
 | 
			
		||||
  { 999, FEC_AUTO },
 | 
			
		||||
  {   0, DVBFE_FEC_NONE, trNOOP("none") },
 | 
			
		||||
  {  12, DVBFE_FEC_1_2,  "1/2" },
 | 
			
		||||
  {  13, DVBFE_FEC_1_3,  "1/3" },
 | 
			
		||||
  {  14, DVBFE_FEC_1_4,  "1/4" },
 | 
			
		||||
  {  23, DVBFE_FEC_2_3,  "2/3" },
 | 
			
		||||
  {  25, DVBFE_FEC_2_5,  "2/5" },
 | 
			
		||||
  {  34, DVBFE_FEC_3_4,  "3/4" },
 | 
			
		||||
  {  35, DVBFE_FEC_3_5,  "3/5" },
 | 
			
		||||
  {  45, DVBFE_FEC_4_5,  "4/5" },
 | 
			
		||||
  {  56, DVBFE_FEC_5_6,  "5/6" },
 | 
			
		||||
  {  67, DVBFE_FEC_6_7,  "6/7" },
 | 
			
		||||
  {  78, DVBFE_FEC_7_8,  "7/8" },
 | 
			
		||||
  {  89, DVBFE_FEC_8_9,  "8/9" },
 | 
			
		||||
  { 910, DVBFE_FEC_9_10, "9/10" },
 | 
			
		||||
  { 999, DVBFE_FEC_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap ModulationValues[] = {
 | 
			
		||||
  {   0, QPSK },
 | 
			
		||||
  {  16, QAM_16 },
 | 
			
		||||
  {  32, QAM_32 },
 | 
			
		||||
  {  64, QAM_64 },
 | 
			
		||||
  { 128, QAM_128 },
 | 
			
		||||
  { 256, QAM_256 },
 | 
			
		||||
  { 999, QAM_AUTO },
 | 
			
		||||
  {   0, DVBFE_MOD_NONE,    trNOOP("none") },
 | 
			
		||||
  {   4, DVBFE_MOD_QAM4,    "QAM4" },
 | 
			
		||||
  {  16, DVBFE_MOD_QAM16,   "QAM16" },
 | 
			
		||||
  {  32, DVBFE_MOD_QAM32,   "QAM32" },
 | 
			
		||||
  {  64, DVBFE_MOD_QAM64,   "QAM64" },
 | 
			
		||||
  { 128, DVBFE_MOD_QAM128,  "QAM128" },
 | 
			
		||||
  { 256, DVBFE_MOD_QAM256,  "QAM256" },
 | 
			
		||||
  { 512, DVBFE_MOD_QAM512,  "QAM512" },
 | 
			
		||||
  {1024, DVBFE_MOD_QAM1024, "QAM1024" },
 | 
			
		||||
  {   1, DVBFE_MOD_BPSK,    "BPSK" },
 | 
			
		||||
  {   2, DVBFE_MOD_QPSK,    "QPSK" },
 | 
			
		||||
  {   3, DVBFE_MOD_OQPSK,   "OQPSK" },
 | 
			
		||||
  {   5, DVBFE_MOD_8PSK,    "8PSK" },
 | 
			
		||||
  {   6, DVBFE_MOD_16APSK,  "16APSK" },
 | 
			
		||||
  {   7, DVBFE_MOD_32APSK,  "32APSK" },
 | 
			
		||||
  {   8, DVBFE_MOD_OFDM,    "OFDM" },
 | 
			
		||||
  {   9, DVBFE_MOD_COFDM,   "COFDM" },
 | 
			
		||||
  {  10, DVBFE_MOD_VSB8,    "VSB8" },
 | 
			
		||||
  {  11, DVBFE_MOD_VSB16,   "VSB16" },
 | 
			
		||||
  { 998, DVBFE_MOD_QAMAUTO, "QAMAUTO" },
 | 
			
		||||
  { 999, DVBFE_MOD_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap SystemValues[] = {
 | 
			
		||||
  {   0, DVBFE_DELSYS_DVBS,  "DVB-S" },
 | 
			
		||||
  {   1, DVBFE_DELSYS_DVBS2, "DVB-S2" },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap TransmissionValues[] = {
 | 
			
		||||
  {   2, TRANSMISSION_MODE_2K },
 | 
			
		||||
  {   8, TRANSMISSION_MODE_8K },
 | 
			
		||||
  { 999, TRANSMISSION_MODE_AUTO },
 | 
			
		||||
  {   2, DVBFE_TRANSMISSION_MODE_2K, "2K" },
 | 
			
		||||
  {   4, DVBFE_TRANSMISSION_MODE_4K, "4K" },
 | 
			
		||||
  {   8, DVBFE_TRANSMISSION_MODE_8K, "8K" },
 | 
			
		||||
  { 999, DVBFE_TRANSMISSION_MODE_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap GuardValues[] = {
 | 
			
		||||
  {   4, GUARD_INTERVAL_1_4 },
 | 
			
		||||
  {   8, GUARD_INTERVAL_1_8 },
 | 
			
		||||
  {  16, GUARD_INTERVAL_1_16 },
 | 
			
		||||
  {  32, GUARD_INTERVAL_1_32 },
 | 
			
		||||
  { 999, GUARD_INTERVAL_AUTO },
 | 
			
		||||
  {   4, DVBFE_GUARD_INTERVAL_1_4,  "1/4" },
 | 
			
		||||
  {   8, DVBFE_GUARD_INTERVAL_1_8,  "1/8" },
 | 
			
		||||
  {  16, DVBFE_GUARD_INTERVAL_1_16, "1/16" },
 | 
			
		||||
  {  32, DVBFE_GUARD_INTERVAL_1_32, "1/32" },
 | 
			
		||||
  { 999, DVBFE_GUARD_INTERVAL_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap HierarchyValues[] = {
 | 
			
		||||
  {   0, HIERARCHY_NONE },
 | 
			
		||||
  {   1, HIERARCHY_1 },
 | 
			
		||||
  {   2, HIERARCHY_2 },
 | 
			
		||||
  {   4, HIERARCHY_4 },
 | 
			
		||||
  { 999, HIERARCHY_AUTO },
 | 
			
		||||
  {   0, DVBFE_HIERARCHY_OFF, trNOOP("off") },
 | 
			
		||||
  {   1, DVBFE_HIERARCHY_ON,  trNOOP("on") },
 | 
			
		||||
  { 999, DVBFE_HIERARCHY_AUTO },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap AlphaValues[] = {
 | 
			
		||||
  {   0, 0 },
 | 
			
		||||
  {   1, DVBFE_ALPHA_1 },
 | 
			
		||||
  {   2, DVBFE_ALPHA_2 },
 | 
			
		||||
  {   4, DVBFE_ALPHA_4 },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap PriorityValues[] = {
 | 
			
		||||
  {   0, DVBFE_STREAM_PRIORITY_HP, trNOOP("high") },
 | 
			
		||||
  {   1, DVBFE_STREAM_PRIORITY_LP, trNOOP("low") },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
const tChannelParameterMap RollOffValues[] = {
 | 
			
		||||
  {   0, DVBFE_ROLLOFF_UNKNOWN },
 | 
			
		||||
  {  20, DVBFE_ROLLOFF_20, "0.20" },
 | 
			
		||||
  {  25, DVBFE_ROLLOFF_25, "0.25" },
 | 
			
		||||
  {  35, DVBFE_ROLLOFF_35, "0.35" },
 | 
			
		||||
  { -1 }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
@@ -107,11 +154,14 @@ int DriverIndex(int Value, const tChannelParameterMap *Map)
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MapToUser(int Value, const tChannelParameterMap *Map)
 | 
			
		||||
int MapToUser(int Value, const tChannelParameterMap *Map, const char **String)
 | 
			
		||||
{
 | 
			
		||||
  int n = DriverIndex(Value, Map);
 | 
			
		||||
  if (n >= 0)
 | 
			
		||||
  if (n >= 0) {
 | 
			
		||||
     if (String)
 | 
			
		||||
        *String = tr(Map[n].userString);
 | 
			
		||||
     return Map[n].userValue;
 | 
			
		||||
     }
 | 
			
		||||
  return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -167,14 +217,18 @@ cChannel::cChannel(void)
 | 
			
		||||
  provider = strdup("");
 | 
			
		||||
  portalName = strdup("");
 | 
			
		||||
  memset(&__BeginData__, 0, (char *)&__EndData__ - (char *)&__BeginData__);
 | 
			
		||||
  inversion    = INVERSION_AUTO;
 | 
			
		||||
  bandwidth    = BANDWIDTH_AUTO;
 | 
			
		||||
  coderateH    = FEC_AUTO;
 | 
			
		||||
  coderateL    = FEC_AUTO;
 | 
			
		||||
  modulation   = QAM_AUTO;
 | 
			
		||||
  transmission = TRANSMISSION_MODE_AUTO;
 | 
			
		||||
  guard        = GUARD_INTERVAL_AUTO;
 | 
			
		||||
  hierarchy    = HIERARCHY_AUTO;
 | 
			
		||||
  inversion    = DVBFE_INVERSION_AUTO;
 | 
			
		||||
  bandwidth    = DVBFE_BANDWIDTH_AUTO;
 | 
			
		||||
  coderateH    = DVBFE_FEC_AUTO;
 | 
			
		||||
  coderateL    = DVBFE_FEC_AUTO;
 | 
			
		||||
  modulation   = DVBFE_MOD_AUTO;
 | 
			
		||||
  system       = DVBFE_DELSYS_DVBS;
 | 
			
		||||
  transmission = DVBFE_TRANSMISSION_MODE_AUTO;
 | 
			
		||||
  guard        = DVBFE_GUARD_INTERVAL_AUTO;
 | 
			
		||||
  hierarchy    = DVBFE_HIERARCHY_AUTO;
 | 
			
		||||
  alpha        = 0;
 | 
			
		||||
  priority     = DVBFE_STREAM_PRIORITY_HP;
 | 
			
		||||
  rollOff      = DVBFE_ROLLOFF_UNKNOWN;
 | 
			
		||||
  modification = CHANNELMOD_NONE;
 | 
			
		||||
  schedule     = NULL;
 | 
			
		||||
  linkChannels = NULL;
 | 
			
		||||
@@ -277,13 +331,17 @@ void cChannel::CopyTransponderData(const cChannel *Channel)
 | 
			
		||||
     coderateH    = Channel->coderateH;
 | 
			
		||||
     coderateL    = Channel->coderateL;
 | 
			
		||||
     modulation   = Channel->modulation;
 | 
			
		||||
     system       = Channel->system;
 | 
			
		||||
     transmission = Channel->transmission;
 | 
			
		||||
     guard        = Channel->guard;
 | 
			
		||||
     hierarchy    = Channel->hierarchy;
 | 
			
		||||
     alpha        = Channel->alpha;
 | 
			
		||||
     priority     = Channel->priority;
 | 
			
		||||
     rollOff      = Channel->rollOff;
 | 
			
		||||
     }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH)
 | 
			
		||||
bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff)
 | 
			
		||||
{
 | 
			
		||||
  // Workarounds for broadcaster stupidity:
 | 
			
		||||
  // Some providers broadcast the transponder frequency of their channels with two different
 | 
			
		||||
@@ -297,19 +355,22 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
 | 
			
		||||
  if (abs(srate - Srate) <= 1)
 | 
			
		||||
     Srate = srate;
 | 
			
		||||
 | 
			
		||||
  if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH) {
 | 
			
		||||
     if (Number()) {
 | 
			
		||||
        dsyslog("changing transponder data of channel %d from %s:%d:%c:%d:%d to %s:%d:%c:%d:%d", Number(), *cSource::ToString(source), frequency, polarization, srate, coderateH, *cSource::ToString(Source), Frequency, Polarization, Srate, CoderateH);
 | 
			
		||||
        modification |= CHANNELMOD_TRANSP;
 | 
			
		||||
        Channels.SetModified();
 | 
			
		||||
        }
 | 
			
		||||
  if (source != Source || frequency != Frequency || polarization != Polarization || srate != Srate || coderateH != CoderateH || modulation != Modulation || system != System || rollOff != RollOff) {
 | 
			
		||||
     cString OldTransponderData = TransponderDataToString();
 | 
			
		||||
     source = Source;
 | 
			
		||||
     frequency = Frequency;
 | 
			
		||||
     polarization = Polarization;
 | 
			
		||||
     srate = Srate;
 | 
			
		||||
     coderateH = CoderateH;
 | 
			
		||||
     modulation = QPSK;
 | 
			
		||||
     modulation = Modulation;
 | 
			
		||||
     system = System;
 | 
			
		||||
     rollOff = RollOff;
 | 
			
		||||
     schedule = NULL;
 | 
			
		||||
     if (Number()) {
 | 
			
		||||
        dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
 | 
			
		||||
        modification |= CHANNELMOD_TRANSP;
 | 
			
		||||
        Channels.SetModified();
 | 
			
		||||
        }
 | 
			
		||||
     }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
@@ -317,29 +378,26 @@ bool cChannel::SetSatTransponderData(int Source, int Frequency, char Polarizatio
 | 
			
		||||
bool cChannel::SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH)
 | 
			
		||||
{
 | 
			
		||||
  if (source != Source || frequency != Frequency || modulation != Modulation || srate != Srate || coderateH != CoderateH) {
 | 
			
		||||
     if (Number()) {
 | 
			
		||||
        dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d to %s:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, modulation, srate, coderateH, *cSource::ToString(Source), Frequency, Modulation, Srate, CoderateH);
 | 
			
		||||
        modification |= CHANNELMOD_TRANSP;
 | 
			
		||||
        Channels.SetModified();
 | 
			
		||||
        }
 | 
			
		||||
     cString OldTransponderData = TransponderDataToString();
 | 
			
		||||
     source = Source;
 | 
			
		||||
     frequency = Frequency;
 | 
			
		||||
     modulation = Modulation;
 | 
			
		||||
     srate = Srate;
 | 
			
		||||
     coderateH = CoderateH;
 | 
			
		||||
     schedule = NULL;
 | 
			
		||||
     if (Number()) {
 | 
			
		||||
        dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
 | 
			
		||||
        modification |= CHANNELMOD_TRANSP;
 | 
			
		||||
        Channels.SetModified();
 | 
			
		||||
        }
 | 
			
		||||
     }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission)
 | 
			
		||||
bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CoderateH, int CoderateL, int Guard, int Transmission, int Alpha, int Priority)
 | 
			
		||||
{
 | 
			
		||||
  if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission) {
 | 
			
		||||
     if (Number()) {
 | 
			
		||||
        dsyslog("changing transponder data of channel %d from %s:%d:%d:%d:%d:%d:%d:%d:%d to %s:%d:%d:%d:%d:%d:%d:%d:%d", Number(), *cSource::ToString(source), frequency, bandwidth, modulation, hierarchy, coderateH, coderateL, guard, transmission, *cSource::ToString(Source), Frequency, Bandwidth, Modulation, Hierarchy, CoderateH, CoderateL, Guard, Transmission);
 | 
			
		||||
        modification |= CHANNELMOD_TRANSP;
 | 
			
		||||
        Channels.SetModified();
 | 
			
		||||
        }
 | 
			
		||||
  if (source != Source || frequency != Frequency || bandwidth != Bandwidth || modulation != Modulation || hierarchy != Hierarchy || coderateH != CoderateH || coderateL != CoderateL || guard != Guard || transmission != Transmission || alpha != Alpha || priority != Priority) {
 | 
			
		||||
     cString OldTransponderData = TransponderDataToString();
 | 
			
		||||
     source = Source;
 | 
			
		||||
     frequency = Frequency;
 | 
			
		||||
     bandwidth = Bandwidth;
 | 
			
		||||
@@ -349,7 +407,14 @@ bool cChannel::SetTerrTransponderData(int Source, int Frequency, int Bandwidth,
 | 
			
		||||
     coderateL = CoderateL;
 | 
			
		||||
     guard = Guard;
 | 
			
		||||
     transmission = Transmission;
 | 
			
		||||
     alpha = Alpha;
 | 
			
		||||
     priority = Priority;
 | 
			
		||||
     schedule = NULL;
 | 
			
		||||
     if (Number()) {
 | 
			
		||||
        dsyslog("changing transponder data of channel %d from %s to %s", Number(), *OldTransponderData, *TransponderDataToString());
 | 
			
		||||
        modification |= CHANNELMOD_TRANSP;
 | 
			
		||||
        Channels.SetModified();
 | 
			
		||||
        }
 | 
			
		||||
     }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
@@ -587,6 +652,13 @@ static int PrintParameter(char *p, char Name, int Value)
 | 
			
		||||
  return Value >= 0 && Value != 999 ? sprintf(p, "%c%d", Name, Value) : 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cString cChannel::TransponderDataToString(void) const
 | 
			
		||||
{
 | 
			
		||||
  if (cSource::IsTerr(source))
 | 
			
		||||
     return cString::sprintf("%d:%s:%s", frequency, *ParametersToString(), *cSource::ToString(source));
 | 
			
		||||
  return cString::sprintf("%d:%s:%s:%d", frequency, *ParametersToString(), *cSource::ToString(source), srate);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cString cChannel::ParametersToString(void) const
 | 
			
		||||
{
 | 
			
		||||
  char type = **cSource::ToString(source);
 | 
			
		||||
@@ -597,13 +669,17 @@ cString cChannel::ParametersToString(void) const
 | 
			
		||||
  char *q = buffer;
 | 
			
		||||
  *q = 0;
 | 
			
		||||
  ST(" S ")  q += sprintf(q, "%c", polarization);
 | 
			
		||||
  ST("CST")  q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'A', MapToUser(alpha, AlphaValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
 | 
			
		||||
  ST("CST")  q += PrintParameter(q, 'C', MapToUser(coderateH, CoderateValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'D', MapToUser(coderateL, CoderateValues));
 | 
			
		||||
  ST("C T")  q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'B', MapToUser(bandwidth, BandwidthValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'G', MapToUser(guard, GuardValues));
 | 
			
		||||
  ST("CST")  q += PrintParameter(q, 'I', MapToUser(inversion, InversionValues));
 | 
			
		||||
  ST("CST")  q += PrintParameter(q, 'M', MapToUser(modulation, ModulationValues));
 | 
			
		||||
  ST(" S ")  q += PrintParameter(q, 'O', MapToUser(rollOff, RollOffValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'P', MapToUser(priority, PriorityValues));
 | 
			
		||||
  ST(" S ")  q += PrintParameter(q, 'S', MapToUser(system, SystemValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'T', MapToUser(transmission, TransmissionValues));
 | 
			
		||||
  ST("  T")  q += PrintParameter(q, 'Y', MapToUser(hierarchy, HierarchyValues));
 | 
			
		||||
  return buffer;
 | 
			
		||||
}
 | 
			
		||||
@@ -628,6 +704,7 @@ bool cChannel::StringToParameters(const char *s)
 | 
			
		||||
{
 | 
			
		||||
  while (s && *s) {
 | 
			
		||||
        switch (toupper(*s)) {
 | 
			
		||||
          case 'A': s = ParseParameter(s, alpha, AlphaValues); break;
 | 
			
		||||
          case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
 | 
			
		||||
          case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
 | 
			
		||||
          case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
 | 
			
		||||
@@ -636,7 +713,11 @@ bool cChannel::StringToParameters(const char *s)
 | 
			
		||||
          case 'I': s = ParseParameter(s, inversion, InversionValues); break;
 | 
			
		||||
          case 'L': polarization = *s++; break;
 | 
			
		||||
          case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
 | 
			
		||||
          case 'Z':// for compatibility with the original DVB-S2 patch - may be removed in future versions
 | 
			
		||||
          case 'O': s = ParseParameter(s, rollOff, RollOffValues); break;
 | 
			
		||||
          case 'P': s = ParseParameter(s, priority, PriorityValues); break;
 | 
			
		||||
          case 'R': polarization = *s++; break;
 | 
			
		||||
          case 'S': s = ParseParameter(s, system, SystemValues); break;
 | 
			
		||||
          case 'T': s = ParseParameter(s, transmission, TransmissionValues); break;
 | 
			
		||||
          case 'V': polarization = *s++; break;
 | 
			
		||||
          case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										23
									
								
								channels.h
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								channels.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: channels.h 1.47 2008/02/08 13:48:31 kls Exp $
 | 
			
		||||
 * $Id: channels.h 2.2 2008/04/12 13:46:50 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CHANNELS_H
 | 
			
		||||
@@ -50,10 +50,10 @@
 | 
			
		||||
struct tChannelParameterMap {
 | 
			
		||||
  int userValue;
 | 
			
		||||
  int driverValue;
 | 
			
		||||
  const char *userString;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
//XXX into cChannel???
 | 
			
		||||
int MapToUser(int Value, const tChannelParameterMap *Map);
 | 
			
		||||
int MapToUser(int Value, const tChannelParameterMap *Map, const char **String = NULL);
 | 
			
		||||
int MapToDriver(int Value, const tChannelParameterMap *Map);
 | 
			
		||||
int UserIndex(int Value, const tChannelParameterMap *Map);
 | 
			
		||||
int DriverIndex(int Value, const tChannelParameterMap *Map);
 | 
			
		||||
@@ -62,9 +62,13 @@ extern const tChannelParameterMap InversionValues[];
 | 
			
		||||
extern const tChannelParameterMap BandwidthValues[];
 | 
			
		||||
extern const tChannelParameterMap CoderateValues[];
 | 
			
		||||
extern const tChannelParameterMap ModulationValues[];
 | 
			
		||||
extern const tChannelParameterMap SystemValues[];
 | 
			
		||||
extern const tChannelParameterMap TransmissionValues[];
 | 
			
		||||
extern const tChannelParameterMap GuardValues[];
 | 
			
		||||
extern const tChannelParameterMap HierarchyValues[];
 | 
			
		||||
extern const tChannelParameterMap AlphaValues[];
 | 
			
		||||
extern const tChannelParameterMap PriorityValues[];
 | 
			
		||||
extern const tChannelParameterMap RollOffValues[];
 | 
			
		||||
 | 
			
		||||
struct tChannelID {
 | 
			
		||||
private:
 | 
			
		||||
@@ -140,14 +144,19 @@ private:
 | 
			
		||||
  int coderateH;
 | 
			
		||||
  int coderateL;
 | 
			
		||||
  int modulation;
 | 
			
		||||
  int system;
 | 
			
		||||
  int transmission;
 | 
			
		||||
  int guard;
 | 
			
		||||
  int hierarchy;
 | 
			
		||||
  int alpha;
 | 
			
		||||
  int priority;
 | 
			
		||||
  int rollOff;
 | 
			
		||||
  int __EndData__;
 | 
			
		||||
  int modification;
 | 
			
		||||
  mutable const cSchedule *schedule;
 | 
			
		||||
  cLinkChannels *linkChannels;
 | 
			
		||||
  cChannel *refChannel;
 | 
			
		||||
  cString TransponderDataToString(void) const;
 | 
			
		||||
  cString ParametersToString(void) const;
 | 
			
		||||
  bool StringToParameters(const char *s);
 | 
			
		||||
public:
 | 
			
		||||
@@ -194,9 +203,13 @@ public:
 | 
			
		||||
  int CoderateH(void) const { return coderateH; }
 | 
			
		||||
  int CoderateL(void) const { return coderateL; }
 | 
			
		||||
  int Modulation(void) const { return modulation; }
 | 
			
		||||
  int System(void) const { return system; }
 | 
			
		||||
  int Transmission(void) const { return transmission; }
 | 
			
		||||
  int Guard(void) const { return guard; }
 | 
			
		||||
  int Hierarchy(void) const { return hierarchy; }
 | 
			
		||||
  int Alpha(void) const { return alpha; }
 | 
			
		||||
  int Priority(void) const { return priority; }
 | 
			
		||||
  int RollOff(void) const { return rollOff; }
 | 
			
		||||
  const cLinkChannels* LinkChannels(void) const { return linkChannels; }
 | 
			
		||||
  const cChannel *RefChannel(void) const { return refChannel; }
 | 
			
		||||
  bool IsCable(void) const { return cSource::IsCable(source); }
 | 
			
		||||
@@ -206,9 +219,9 @@ public:
 | 
			
		||||
  bool HasTimer(void) const;
 | 
			
		||||
  int Modification(int Mask = CHANNELMOD_ALL);
 | 
			
		||||
  void CopyTransponderData(const cChannel *Channel);
 | 
			
		||||
  bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH);
 | 
			
		||||
  bool SetSatTransponderData(int Source, int Frequency, char Polarization, int Srate, int CoderateH, int Modulation, int System, int RollOff);
 | 
			
		||||
  bool SetCableTransponderData(int Source, int Frequency, int Modulation, int Srate, int CoderateH);
 | 
			
		||||
  bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission);
 | 
			
		||||
  bool SetTerrTransponderData(int Source, int Frequency, int Bandwidth, int Modulation, int Hierarchy, int CodeRateH, int CodeRateL, int Guard, int Transmission, int Alpha, int Priority);
 | 
			
		||||
  void SetId(int Nid, int Tid, int Sid, int Rid = 0);
 | 
			
		||||
  void SetName(const char *Name, const char *ShortName, const char *Provider);
 | 
			
		||||
  void SetPortalName(const char *PortalName);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								ci.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								ci.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: ci.c 1.48 2007/04/30 13:02:49 kls Exp $
 | 
			
		||||
 * $Id: ci.c 2.1 2008/04/13 13:28:52 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "ci.h"
 | 
			
		||||
@@ -1525,7 +1525,7 @@ void cCiAdapter::Action(void)
 | 
			
		||||
 | 
			
		||||
cCamSlots CamSlots;
 | 
			
		||||
 | 
			
		||||
#define MODULE_CHECK_INTERVAL 100 // ms
 | 
			
		||||
#define MODULE_CHECK_INTERVAL 500 // ms
 | 
			
		||||
#define MODULE_RESET_TIMEOUT    2 // s
 | 
			
		||||
 | 
			
		||||
cCamSlot::cCamSlot(cCiAdapter *CiAdapter)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								ci.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								ci.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: ci.h 1.23 2007/01/03 12:49:10 kls Exp $
 | 
			
		||||
 * $Id: ci.h 2.0 2007/01/03 12:49:10 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CI_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								config.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								config.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: config.c 1.161 2008/02/17 13:39:00 kls Exp $
 | 
			
		||||
 * $Id: config.c 2.0 2008/02/17 13:39:00 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "config.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								config.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: config.h 1.310 2008/03/23 10:26:10 kls Exp $
 | 
			
		||||
 * $Id: config.h 2.1 2008/04/12 13:02:10 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CONFIG_H
 | 
			
		||||
@@ -22,13 +22,13 @@
 | 
			
		||||
 | 
			
		||||
// VDR's own version number:
 | 
			
		||||
 | 
			
		||||
#define VDRVERSION  "1.6.0"
 | 
			
		||||
#define VDRVERSNUM   10600  // Version * 10000 + Major * 100 + Minor
 | 
			
		||||
#define VDRVERSION  "1.7.0"
 | 
			
		||||
#define VDRVERSNUM   10700  // Version * 10000 + Major * 100 + Minor
 | 
			
		||||
 | 
			
		||||
// The plugin API's version number:
 | 
			
		||||
 | 
			
		||||
#define APIVERSION  "1.6.0"
 | 
			
		||||
#define APIVERSNUM   10600  // Version * 10000 + Major * 100 + Minor
 | 
			
		||||
#define APIVERSION  "1.7.0"
 | 
			
		||||
#define APIVERSNUM   10700  // 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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								cutter.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								cutter.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: cutter.c 1.18 2008/01/13 12:22:21 kls Exp $
 | 
			
		||||
 * $Id: cutter.c 2.0 2008/01/13 12:22:21 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "cutter.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								cutter.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								cutter.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: cutter.h 1.1 2002/06/22 10:03:15 kls Exp $
 | 
			
		||||
 * $Id: cutter.h 2.0 2002/06/22 10:03:15 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __CUTTER_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								device.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								device.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: device.c 1.157 2008/03/09 10:03:34 kls Exp $
 | 
			
		||||
 * $Id: device.c 2.2 2008/04/12 14:12:14 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "device.h"
 | 
			
		||||
@@ -355,6 +355,21 @@ cDevice *cDevice::GetDevice(int Index)
 | 
			
		||||
  return (0 <= Index && Index < numDevices) ? device[Index] : NULL;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
 | 
			
		||||
{
 | 
			
		||||
  int MaxNumProvidedSystems = 1 << AvailableBits;
 | 
			
		||||
  int NumProvidedSystems = Device->NumProvidedSystems();
 | 
			
		||||
  if (NumProvidedSystems > MaxNumProvidedSystems) {
 | 
			
		||||
     esyslog("ERROR: device %d supports %d modulation systems but cDevice::GetDevice() currently only supports %d delivery systems which should be fixed", Device->CardIndex() + 1, NumProvidedSystems, MaxNumProvidedSystems);
 | 
			
		||||
     NumProvidedSystems = MaxNumProvidedSystems;
 | 
			
		||||
     }
 | 
			
		||||
  else if (NumProvidedSystems <= 0) {
 | 
			
		||||
     esyslog("ERROR: device %d reported an invalid number (%d) of supported delivery systems - assuming 1", Device->CardIndex() + 1, NumProvidedSystems);
 | 
			
		||||
     NumProvidedSystems = 1;
 | 
			
		||||
     }
 | 
			
		||||
  return NumProvidedSystems;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView)
 | 
			
		||||
{
 | 
			
		||||
  cDevice *AvoidDevice = avoidDevice;
 | 
			
		||||
@@ -408,6 +423,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
 | 
			
		||||
             imp <<= 1; imp |= LiveView ? !device[i]->IsPrimaryDevice() || ndr : 0;                                  // prefer the primary device for live viewing if we don't need to detach existing receivers
 | 
			
		||||
             imp <<= 1; imp |= !device[i]->Receiving() && (device[i] != cTransferControl::ReceiverDevice() || device[i]->IsPrimaryDevice()) || ndr; // use receiving devices if we don't need to detach existing receivers, but avoid primary device in local transfer mode
 | 
			
		||||
             imp <<= 1; imp |= device[i]->Receiving();                                                               // avoid devices that are receiving
 | 
			
		||||
             imp <<= 2; imp |= GetClippedNumProvidedSystems(2, device[i]) - 1;                                       // avoid cards which support multiple delivery systems
 | 
			
		||||
             imp <<= 1; imp |= device[i] == cTransferControl::ReceiverDevice();                                      // avoid the Transfer Mode receiver device
 | 
			
		||||
             imp <<= 8; imp |= min(max(device[i]->Priority() + MAXPRIORITY, 0), 0xFF);                               // use the device with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
 | 
			
		||||
             imp <<= 8; imp |= min(max((NumUsableSlots ? SlotPriority[j] : 0) + MAXPRIORITY, 0), 0xFF);              // use the CAM slot with the lowest priority (+MAXPRIORITY to assure that values -99..99 can be used)
 | 
			
		||||
@@ -712,6 +728,11 @@ bool cDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Needs
 | 
			
		||||
  return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int cDevice::NumProvidedSystems(void) const
 | 
			
		||||
{
 | 
			
		||||
  return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cDevice::IsTunedToTransponder(const cChannel *Channel)
 | 
			
		||||
{
 | 
			
		||||
  return false;
 | 
			
		||||
@@ -1273,7 +1294,7 @@ int cDevice::PlayPesPacket(const uchar *Data, int Length, bool VideoOnly)
 | 
			
		||||
               uchar SubStreamIndex = SubStreamId & 0x1F;
 | 
			
		||||
 | 
			
		||||
               // Compatibility mode for old VDR recordings, where 0xBD was only AC3:
 | 
			
		||||
pre_1_3_19_PrivateStreamDeteced:
 | 
			
		||||
pre_1_3_19_PrivateStreamDetected:
 | 
			
		||||
               if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
 | 
			
		||||
                  SubStreamId = c;
 | 
			
		||||
                  SubStreamType = 0x80;
 | 
			
		||||
@@ -1314,7 +1335,8 @@ pre_1_3_19_PrivateStreamDeteced:
 | 
			
		||||
                         if (pre_1_3_19_PrivateStream > MIN_PRE_1_3_19_PRIVATESTREAM) {
 | 
			
		||||
                            dsyslog("switching to pre 1.3.19 Dolby Digital compatibility mode - substream id = %02X", SubStreamId);
 | 
			
		||||
                            ClrAvailableTracks();
 | 
			
		||||
                            goto pre_1_3_19_PrivateStreamDeteced;
 | 
			
		||||
                            pre_1_3_19_PrivateStream = MIN_PRE_1_3_19_PRIVATESTREAM + 1;
 | 
			
		||||
                            goto pre_1_3_19_PrivateStreamDetected;
 | 
			
		||||
                            }
 | 
			
		||||
                         }
 | 
			
		||||
                 }
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								device.h
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								device.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: device.h 1.91 2008/02/23 13:13:04 kls Exp $
 | 
			
		||||
 * $Id: device.h 2.1 2008/04/12 11:11:23 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DEVICE_H
 | 
			
		||||
@@ -228,6 +228,12 @@ public:
 | 
			
		||||
         ///< function itself actually returns true.
 | 
			
		||||
         ///< The default implementation always returns false, so a derived cDevice
 | 
			
		||||
         ///< class that can provide channels must implement this function.
 | 
			
		||||
  virtual int NumProvidedSystems(void) const;
 | 
			
		||||
         ///< Returns the number of individual "delivery systems" this device provides.
 | 
			
		||||
         ///< The default implementation returns 0, so any derived class that can
 | 
			
		||||
         ///< 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 bool IsTunedToTransponder(const cChannel *Channel);
 | 
			
		||||
         ///< Returns true if this device is currently tuned to the given Channel's
 | 
			
		||||
         ///< transponder.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								diseqc.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								diseqc.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: diseqc.c 1.6 2008/02/10 14:09:27 kls Exp $
 | 
			
		||||
 * $Id: diseqc.c 2.0 2008/02/10 14:09:27 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "diseqc.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								diseqc.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								diseqc.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: diseqc.h 1.2 2002/12/07 13:54:02 kls Exp $
 | 
			
		||||
 * $Id: diseqc.h 2.0 2002/12/07 13:54:02 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DISEQC_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dvbci.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dvbci.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbci.c 1.1 2007/01/04 12:49:10 kls Exp $
 | 
			
		||||
 * $Id: dvbci.c 2.0 2007/01/04 12:49:10 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "dvbci.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dvbci.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dvbci.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbci.h 1.1 2006/11/26 11:19:42 kls Exp $
 | 
			
		||||
 * $Id: dvbci.h 2.0 2006/11/26 11:19:42 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DVBCI_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										293
									
								
								dvbdevice.c
									
									
									
									
									
								
							
							
						
						
									
										293
									
								
								dvbdevice.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbdevice.c 1.170 2008/02/09 16:11:44 kls Exp $
 | 
			
		||||
 * $Id: dvbdevice.c 2.2 2008/04/13 14:15:35 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "dvbdevice.h"
 | 
			
		||||
@@ -76,7 +76,7 @@ private:
 | 
			
		||||
  int tuneTimeout;
 | 
			
		||||
  int lockTimeout;
 | 
			
		||||
  time_t lastTimeoutReport;
 | 
			
		||||
  fe_type_t frontendType;
 | 
			
		||||
  dvbfe_delsys frontendType;
 | 
			
		||||
  cChannel channel;
 | 
			
		||||
  const char *diseqcCommands;
 | 
			
		||||
  eTunerStatus tunerStatus;
 | 
			
		||||
@@ -87,14 +87,14 @@ private:
 | 
			
		||||
  bool SetFrontend(void);
 | 
			
		||||
  virtual void Action(void);
 | 
			
		||||
public:
 | 
			
		||||
  cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType);
 | 
			
		||||
  cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType);
 | 
			
		||||
  virtual ~cDvbTuner();
 | 
			
		||||
  bool IsTunedTo(const cChannel *Channel) const;
 | 
			
		||||
  void Set(const cChannel *Channel, bool Tune);
 | 
			
		||||
  bool Locked(int TimeoutMs = 0);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType)
 | 
			
		||||
cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, dvbfe_delsys FrontendType)
 | 
			
		||||
{
 | 
			
		||||
  fd_frontend = Fd_Frontend;
 | 
			
		||||
  cardIndex = CardIndex;
 | 
			
		||||
@@ -104,7 +104,7 @@ cDvbTuner::cDvbTuner(int Fd_Frontend, int CardIndex, fe_type_t FrontendType)
 | 
			
		||||
  lastTimeoutReport = 0;
 | 
			
		||||
  diseqcCommands = NULL;
 | 
			
		||||
  tunerStatus = tsIdle;
 | 
			
		||||
  if (frontendType == FE_QPSK)
 | 
			
		||||
  if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
 | 
			
		||||
     CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
 | 
			
		||||
  SetDescription("tuner on device %d", cardIndex + 1);
 | 
			
		||||
  Start();
 | 
			
		||||
@@ -120,7 +120,26 @@ cDvbTuner::~cDvbTuner()
 | 
			
		||||
 | 
			
		||||
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
 | 
			
		||||
{
 | 
			
		||||
  return tunerStatus != tsIdle && channel.Source() == Channel->Source() && channel.Transponder() == Channel->Transponder();
 | 
			
		||||
  if (tunerStatus == tsIdle)
 | 
			
		||||
     return false; // not tuned to
 | 
			
		||||
  if (channel.Source() != Channel->Source() || channel.Transponder() != Channel->Transponder())
 | 
			
		||||
     return false; // sufficient mismatch
 | 
			
		||||
  char Type = **cSource::ToString(Channel->Source());
 | 
			
		||||
#define ST(s, p) if (strchr(s, Type)) if (channel.p() != Channel->p()) return false;
 | 
			
		||||
  // Polarization is already checked as part of the Transponder.
 | 
			
		||||
  ST("  T", Alpha);
 | 
			
		||||
  ST("  T", Bandwidth);
 | 
			
		||||
  ST("CST", CoderateH);
 | 
			
		||||
  ST("  T", CoderateL);
 | 
			
		||||
  ST("  T", Guard);
 | 
			
		||||
  ST("CST", Inversion);
 | 
			
		||||
  ST("CST", Modulation);
 | 
			
		||||
  ST(" S ", RollOff);
 | 
			
		||||
  ST("  T", Priority);
 | 
			
		||||
  ST(" S ", System);
 | 
			
		||||
  ST("  T", Transmission);
 | 
			
		||||
  ST("  T", Hierarchy);
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cDvbTuner::Set(const cChannel *Channel, bool Tune)
 | 
			
		||||
@@ -173,114 +192,126 @@ static unsigned int FrequencyToHz(unsigned int f)
 | 
			
		||||
 | 
			
		||||
bool cDvbTuner::SetFrontend(void)
 | 
			
		||||
{
 | 
			
		||||
  dvb_frontend_parameters Frontend;
 | 
			
		||||
 | 
			
		||||
  dvbfe_params Frontend;
 | 
			
		||||
  memset(&Frontend, 0, sizeof(Frontend));
 | 
			
		||||
 | 
			
		||||
  switch (frontendType) {
 | 
			
		||||
    case FE_QPSK: { // DVB-S
 | 
			
		||||
 | 
			
		||||
         unsigned int frequency = channel.Frequency();
 | 
			
		||||
 | 
			
		||||
         if (Setup.DiSEqC) {
 | 
			
		||||
            cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
 | 
			
		||||
            if (diseqc) {
 | 
			
		||||
               if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
 | 
			
		||||
                  cDiseqc::eDiseqcActions da;
 | 
			
		||||
                  for (char *CurrentAction = NULL; (da = diseqc->Execute(&CurrentAction)) != cDiseqc::daNone; ) {
 | 
			
		||||
                      switch (da) {
 | 
			
		||||
                        case cDiseqc::daNone:      break;
 | 
			
		||||
                        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: {
 | 
			
		||||
                             int n = 0;
 | 
			
		||||
                             uchar *codes = diseqc->Codes(n);
 | 
			
		||||
                             if (codes) {
 | 
			
		||||
                                struct dvb_diseqc_master_cmd cmd;
 | 
			
		||||
                                memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
 | 
			
		||||
                                cmd.msg_len = n;
 | 
			
		||||
                                CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
 | 
			
		||||
                                }
 | 
			
		||||
                             }
 | 
			
		||||
                             break;
 | 
			
		||||
                        }
 | 
			
		||||
                      }
 | 
			
		||||
                  diseqcCommands = diseqc->Commands();
 | 
			
		||||
  if (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2)) {
 | 
			
		||||
     unsigned int frequency = channel.Frequency();
 | 
			
		||||
     if (Setup.DiSEqC) {
 | 
			
		||||
        cDiseqc *diseqc = Diseqcs.Get(channel.Source(), channel.Frequency(), channel.Polarization());
 | 
			
		||||
        if (diseqc) {
 | 
			
		||||
           if (diseqc->Commands() && (!diseqcCommands || strcmp(diseqcCommands, diseqc->Commands()) != 0)) {
 | 
			
		||||
              cDiseqc::eDiseqcActions da;
 | 
			
		||||
              for (char *CurrentAction = NULL; (da = diseqc->Execute(&CurrentAction)) != cDiseqc::daNone; ) {
 | 
			
		||||
                  switch (da) {
 | 
			
		||||
                    case cDiseqc::daNone:      break;
 | 
			
		||||
                    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: {
 | 
			
		||||
                         int n = 0;
 | 
			
		||||
                         uchar *codes = diseqc->Codes(n);
 | 
			
		||||
                         if (codes) {
 | 
			
		||||
                            struct dvb_diseqc_master_cmd cmd;
 | 
			
		||||
                            memcpy(cmd.msg, codes, min(n, int(sizeof(cmd.msg))));
 | 
			
		||||
                            cmd.msg_len = n;
 | 
			
		||||
                            CHECK(ioctl(fd_frontend, FE_DISEQC_SEND_MASTER_CMD, &cmd));
 | 
			
		||||
                            }
 | 
			
		||||
                         }
 | 
			
		||||
                         break;
 | 
			
		||||
                    }
 | 
			
		||||
                  }
 | 
			
		||||
               frequency -= diseqc->Lof();
 | 
			
		||||
               }
 | 
			
		||||
            else {
 | 
			
		||||
               esyslog("ERROR: no DiSEqC parameters found for channel %d", channel.Number());
 | 
			
		||||
               return false;
 | 
			
		||||
               }
 | 
			
		||||
            }
 | 
			
		||||
         else {
 | 
			
		||||
            int tone = SEC_TONE_OFF;
 | 
			
		||||
              diseqcCommands = diseqc->Commands();
 | 
			
		||||
              }
 | 
			
		||||
           frequency -= diseqc->Lof();
 | 
			
		||||
           }
 | 
			
		||||
        else {
 | 
			
		||||
           esyslog("ERROR: no DiSEqC parameters found for channel %d", channel.Number());
 | 
			
		||||
           return false;
 | 
			
		||||
           }
 | 
			
		||||
        }
 | 
			
		||||
     else {
 | 
			
		||||
        int tone = SEC_TONE_OFF;
 | 
			
		||||
        if (frequency < (unsigned int)Setup.LnbSLOF) {
 | 
			
		||||
           frequency -= Setup.LnbFrequLo;
 | 
			
		||||
           tone = SEC_TONE_OFF;
 | 
			
		||||
           }
 | 
			
		||||
        else {
 | 
			
		||||
           frequency -= Setup.LnbFrequHi;
 | 
			
		||||
           tone = SEC_TONE_ON;
 | 
			
		||||
           }
 | 
			
		||||
        int volt = (channel.Polarization() == 'v' || channel.Polarization() == 'V' || channel.Polarization() == 'r' || channel.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
 | 
			
		||||
        CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
 | 
			
		||||
        CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
 | 
			
		||||
        }
 | 
			
		||||
     frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
 | 
			
		||||
 | 
			
		||||
            if (frequency < (unsigned int)Setup.LnbSLOF) {
 | 
			
		||||
               frequency -= Setup.LnbFrequLo;
 | 
			
		||||
               tone = SEC_TONE_OFF;
 | 
			
		||||
               }
 | 
			
		||||
            else {
 | 
			
		||||
               frequency -= Setup.LnbFrequHi;
 | 
			
		||||
               tone = SEC_TONE_ON;
 | 
			
		||||
               }
 | 
			
		||||
            int volt = (channel.Polarization() == 'v' || channel.Polarization() == 'V' || channel.Polarization() == 'r' || channel.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
 | 
			
		||||
            CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
 | 
			
		||||
            CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
 | 
			
		||||
            }
 | 
			
		||||
     Frontend.delivery = dvbfe_delsys(channel.System());
 | 
			
		||||
     Frontend.frequency = frequency * 1000UL;
 | 
			
		||||
     Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
 | 
			
		||||
     if (Frontend.delivery == DVBFE_DELSYS_DVBS) {
 | 
			
		||||
        Frontend.delsys.dvbs.modulation = dvbfe_modulation(channel.Modulation());
 | 
			
		||||
        Frontend.delsys.dvbs.symbol_rate = channel.Srate() * 1000UL;
 | 
			
		||||
        Frontend.delsys.dvbs.fec = dvbfe_fec(channel.CoderateH());
 | 
			
		||||
        }
 | 
			
		||||
     else {
 | 
			
		||||
        Frontend.delsys.dvbs2.modulation = dvbfe_modulation(channel.Modulation());
 | 
			
		||||
        Frontend.delsys.dvbs2.symbol_rate = channel.Srate() * 1000UL;
 | 
			
		||||
        Frontend.delsys.dvbs2.fec = dvbfe_fec(channel.CoderateH());
 | 
			
		||||
        Frontend.delsys.dvbs2.rolloff = dvbfe_rolloff(channel.RollOff());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
         frequency = abs(frequency); // Allow for C-band, where the frequency is less than the LOF
 | 
			
		||||
         Frontend.frequency = frequency * 1000UL;
 | 
			
		||||
         Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
 | 
			
		||||
         Frontend.u.qpsk.symbol_rate = channel.Srate() * 1000UL;
 | 
			
		||||
         Frontend.u.qpsk.fec_inner = fe_code_rate_t(channel.CoderateH());
 | 
			
		||||
     tuneTimeout = DVBS_TUNE_TIMEOUT;
 | 
			
		||||
     lockTimeout = DVBS_LOCK_TIMEOUT;
 | 
			
		||||
 | 
			
		||||
         tuneTimeout = DVBS_TUNE_TIMEOUT;
 | 
			
		||||
         lockTimeout = DVBS_LOCK_TIMEOUT;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    case FE_QAM: { // DVB-C
 | 
			
		||||
     dvbfe_info feinfo;
 | 
			
		||||
     feinfo.delivery = Frontend.delivery;
 | 
			
		||||
     CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
 | 
			
		||||
     }
 | 
			
		||||
  else if (frontendType & DVBFE_DELSYS_DVBC) {
 | 
			
		||||
     Frontend.delivery = DVBFE_DELSYS_DVBC;
 | 
			
		||||
     Frontend.frequency = FrequencyToHz(channel.Frequency());
 | 
			
		||||
     Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
 | 
			
		||||
     Frontend.delsys.dvbc.symbol_rate = channel.Srate() * 1000UL;
 | 
			
		||||
     Frontend.delsys.dvbc.fec = dvbfe_fec(channel.CoderateH());
 | 
			
		||||
     Frontend.delsys.dvbc.modulation = dvbfe_modulation(channel.Modulation());
 | 
			
		||||
 | 
			
		||||
         // Frequency and symbol rate:
 | 
			
		||||
     tuneTimeout = DVBC_TUNE_TIMEOUT;
 | 
			
		||||
     lockTimeout = DVBC_LOCK_TIMEOUT;
 | 
			
		||||
 | 
			
		||||
         Frontend.frequency = FrequencyToHz(channel.Frequency());
 | 
			
		||||
         Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
 | 
			
		||||
         Frontend.u.qam.symbol_rate = channel.Srate() * 1000UL;
 | 
			
		||||
         Frontend.u.qam.fec_inner = fe_code_rate_t(channel.CoderateH());
 | 
			
		||||
         Frontend.u.qam.modulation = fe_modulation_t(channel.Modulation());
 | 
			
		||||
     dvbfe_info feinfo;
 | 
			
		||||
     feinfo.delivery = Frontend.delivery;
 | 
			
		||||
     CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
 | 
			
		||||
     }
 | 
			
		||||
  else if (frontendType & DVBFE_DELSYS_DVBT) {
 | 
			
		||||
     Frontend.delivery = DVBFE_DELSYS_DVBT;
 | 
			
		||||
     Frontend.frequency = FrequencyToHz(channel.Frequency());
 | 
			
		||||
     Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
 | 
			
		||||
     Frontend.delsys.dvbt.bandwidth = dvbfe_bandwidth(channel.Bandwidth());
 | 
			
		||||
     Frontend.delsys.dvbt.code_rate_HP = dvbfe_fec(channel.CoderateH());
 | 
			
		||||
     Frontend.delsys.dvbt.code_rate_LP = dvbfe_fec(channel.CoderateL());
 | 
			
		||||
     Frontend.delsys.dvbt.constellation = dvbfe_modulation(channel.Modulation());
 | 
			
		||||
     Frontend.delsys.dvbt.transmission_mode = dvbfe_transmission_mode(channel.Transmission());
 | 
			
		||||
     Frontend.delsys.dvbt.guard_interval = dvbfe_guard_interval(channel.Guard());
 | 
			
		||||
     Frontend.delsys.dvbt.hierarchy = dvbfe_hierarchy(channel.Hierarchy());
 | 
			
		||||
     Frontend.delsys.dvbt.alpha = dvbfe_alpha(channel.Alpha());
 | 
			
		||||
     Frontend.delsys.dvbt.priority = dvbfe_stream_priority(channel.Priority());
 | 
			
		||||
 | 
			
		||||
         tuneTimeout = DVBC_TUNE_TIMEOUT;
 | 
			
		||||
         lockTimeout = DVBC_LOCK_TIMEOUT;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    case FE_OFDM: { // DVB-T
 | 
			
		||||
     tuneTimeout = DVBT_TUNE_TIMEOUT;
 | 
			
		||||
     lockTimeout = DVBT_LOCK_TIMEOUT;
 | 
			
		||||
 | 
			
		||||
         // Frequency and OFDM paramaters:
 | 
			
		||||
 | 
			
		||||
         Frontend.frequency = FrequencyToHz(channel.Frequency());
 | 
			
		||||
         Frontend.inversion = fe_spectral_inversion_t(channel.Inversion());
 | 
			
		||||
         Frontend.u.ofdm.bandwidth = fe_bandwidth_t(channel.Bandwidth());
 | 
			
		||||
         Frontend.u.ofdm.code_rate_HP = fe_code_rate_t(channel.CoderateH());
 | 
			
		||||
         Frontend.u.ofdm.code_rate_LP = fe_code_rate_t(channel.CoderateL());
 | 
			
		||||
         Frontend.u.ofdm.constellation = fe_modulation_t(channel.Modulation());
 | 
			
		||||
         Frontend.u.ofdm.transmission_mode = fe_transmit_mode_t(channel.Transmission());
 | 
			
		||||
         Frontend.u.ofdm.guard_interval = fe_guard_interval_t(channel.Guard());
 | 
			
		||||
         Frontend.u.ofdm.hierarchy_information = fe_hierarchy_t(channel.Hierarchy());
 | 
			
		||||
 | 
			
		||||
         tuneTimeout = DVBT_TUNE_TIMEOUT;
 | 
			
		||||
         lockTimeout = DVBT_LOCK_TIMEOUT;
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    default:
 | 
			
		||||
         esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
 | 
			
		||||
         return false;
 | 
			
		||||
    }
 | 
			
		||||
  if (ioctl(fd_frontend, FE_SET_FRONTEND, &Frontend) < 0) {
 | 
			
		||||
     dvbfe_info feinfo;
 | 
			
		||||
     feinfo.delivery = Frontend.delivery;
 | 
			
		||||
     CHECK(ioctl(fd_frontend, DVBFE_GET_INFO, &feinfo)); //switch system
 | 
			
		||||
     }
 | 
			
		||||
  else {
 | 
			
		||||
     esyslog("ERROR: attempt to set channel with unknown DVB frontend type");
 | 
			
		||||
     return false;
 | 
			
		||||
     }
 | 
			
		||||
  if (ioctl(fd_frontend, DVBFE_SET_PARAMS, &Frontend) < 0) {
 | 
			
		||||
     esyslog("ERROR: frontend %d: %m", cardIndex);
 | 
			
		||||
     return false;
 | 
			
		||||
     }
 | 
			
		||||
@@ -351,11 +382,23 @@ void cDvbTuner::Action(void)
 | 
			
		||||
int cDvbDevice::devVideoOffset = -1;
 | 
			
		||||
int cDvbDevice::setTransferModeForDolbyDigital = 1;
 | 
			
		||||
 | 
			
		||||
const char *DeliverySystems[] = {
 | 
			
		||||
  "DVBS",
 | 
			
		||||
  "DSS",
 | 
			
		||||
  "DVBS2",
 | 
			
		||||
  "DVBC",
 | 
			
		||||
  "DVBT",
 | 
			
		||||
  "DVBH",
 | 
			
		||||
  "ATSC",
 | 
			
		||||
  NULL
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
cDvbDevice::cDvbDevice(int n)
 | 
			
		||||
{
 | 
			
		||||
  ciAdapter = NULL;
 | 
			
		||||
  dvbTuner = NULL;
 | 
			
		||||
  frontendType = fe_type_t(-1); // don't know how else to initialize this - there is no FE_UNKNOWN
 | 
			
		||||
  frontendType = DVBFE_DELSYS_DUMMY;
 | 
			
		||||
  numProvidedSystems = 0;
 | 
			
		||||
  spuDecoder = NULL;
 | 
			
		||||
  digitalAudio = false;
 | 
			
		||||
  playMode = pmNone;
 | 
			
		||||
@@ -417,9 +460,22 @@ cDvbDevice::cDvbDevice(int n)
 | 
			
		||||
  // We only check the devices that must be present - the others will be checked before accessing them://XXX
 | 
			
		||||
 | 
			
		||||
  if (fd_frontend >= 0) {
 | 
			
		||||
     dvb_frontend_info feinfo;
 | 
			
		||||
     if (ioctl(fd_frontend, FE_GET_INFO, &feinfo) >= 0) {
 | 
			
		||||
        frontendType = feinfo.type;
 | 
			
		||||
     if (ioctl(fd_frontend, DVBFE_GET_DELSYS, &frontendType) >= 0) {
 | 
			
		||||
        const char **DeliverySystem = DeliverySystems;
 | 
			
		||||
        cString ds;
 | 
			
		||||
        for (int i = 0; i < 32; i++) {
 | 
			
		||||
            if (frontendType & (1u << i)) {
 | 
			
		||||
               numProvidedSystems++;
 | 
			
		||||
               if (*DeliverySystem)
 | 
			
		||||
                  ds = cString::sprintf("%s %s", *ds ? *ds : "", *DeliverySystem);
 | 
			
		||||
               else
 | 
			
		||||
                  esyslog("ERROR: unknown delivery system %d", i);
 | 
			
		||||
               }
 | 
			
		||||
            if (*DeliverySystem)
 | 
			
		||||
               DeliverySystem++;
 | 
			
		||||
            }
 | 
			
		||||
        if (*ds)
 | 
			
		||||
           isyslog("device %d provides:%s", CardIndex() + 1, *ds);
 | 
			
		||||
        dvbTuner = new cDvbTuner(fd_frontend, CardIndex(), frontendType);
 | 
			
		||||
        }
 | 
			
		||||
     else
 | 
			
		||||
@@ -744,14 +800,20 @@ bool cDvbDevice::ProvidesSource(int Source) const
 | 
			
		||||
{
 | 
			
		||||
  int type = Source & cSource::st_Mask;
 | 
			
		||||
  return type == cSource::stNone
 | 
			
		||||
      || type == cSource::stCable && frontendType == FE_QAM
 | 
			
		||||
      || type == cSource::stSat   && frontendType == FE_QPSK
 | 
			
		||||
      || type == cSource::stTerr  && frontendType == FE_OFDM;
 | 
			
		||||
      || type == cSource::stCable && (frontendType & DVBFE_DELSYS_DVBC)
 | 
			
		||||
      || type == cSource::stSat   && (frontendType & (DVBFE_DELSYS_DVBS | DVBFE_DELSYS_DVBS2))
 | 
			
		||||
      || type == cSource::stTerr  && (frontendType & DVBFE_DELSYS_DVBT);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
 | 
			
		||||
{
 | 
			
		||||
  return ProvidesSource(Channel->Source()) && (!cSource::IsSat(Channel->Source()) || !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization()));
 | 
			
		||||
  if (!ProvidesSource(Channel->Source()))
 | 
			
		||||
     return false; // doesn't provide source
 | 
			
		||||
  if (!cSource::IsSat(Channel->Source()))
 | 
			
		||||
     return true; // source is sufficient for non sat
 | 
			
		||||
  if (!(frontendType & Channel->System()))
 | 
			
		||||
     return false; // requires modulation system which frontend doesn't provide
 | 
			
		||||
  return !Setup.DiSEqC || Diseqcs.Get(Channel->Source(), Channel->Frequency(), Channel->Polarization());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *NeedsDetachReceivers) const
 | 
			
		||||
@@ -760,7 +822,7 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
 | 
			
		||||
  bool hasPriority = Priority < 0 || Priority > this->Priority();
 | 
			
		||||
  bool needsDetachReceivers = false;
 | 
			
		||||
 | 
			
		||||
  if (ProvidesSource(Channel->Source())) {
 | 
			
		||||
  if (ProvidesTransponder(Channel)) {
 | 
			
		||||
     result = hasPriority;
 | 
			
		||||
     if (Priority >= 0 && Receiving(true)) {
 | 
			
		||||
        if (dvbTuner->IsTunedTo(Channel)) {
 | 
			
		||||
@@ -792,6 +854,11 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
 | 
			
		||||
  return result;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int cDvbDevice::NumProvidedSystems(void) const
 | 
			
		||||
{
 | 
			
		||||
  return numProvidedSystems;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool cDvbDevice::IsTunedToTransponder(const cChannel *Channel)
 | 
			
		||||
{
 | 
			
		||||
  return dvbTuner->IsTunedTo(Channel);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										10
									
								
								dvbdevice.h
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								dvbdevice.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbdevice.h 1.47 2008/02/08 13:48:31 kls Exp $
 | 
			
		||||
 * $Id: dvbdevice.h 2.1 2008/04/12 11:20:48 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DVBDEVICE_H
 | 
			
		||||
@@ -15,8 +15,8 @@
 | 
			
		||||
#include "device.h"
 | 
			
		||||
#include "dvbspu.h"
 | 
			
		||||
 | 
			
		||||
#if DVB_API_VERSION != 3
 | 
			
		||||
#error VDR requires Linux DVB driver API version 3!
 | 
			
		||||
#if DVB_API_VERSION != 3 || DVB_API_VERSION_MINOR != 3
 | 
			
		||||
#error VDR requires Linux DVB driver API version 3.3!
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define MAXDVBDEVICES  8
 | 
			
		||||
@@ -35,7 +35,8 @@ public:
 | 
			
		||||
         ///< Must be called before accessing any DVB functions.
 | 
			
		||||
         ///< \return True if any devices are available.
 | 
			
		||||
private:
 | 
			
		||||
  fe_type_t frontendType;
 | 
			
		||||
  dvbfe_delsys frontendType;
 | 
			
		||||
  int numProvidedSystems;
 | 
			
		||||
  int fd_osd, fd_audio, fd_video, fd_dvr, fd_stc, fd_ca;
 | 
			
		||||
protected:
 | 
			
		||||
  virtual void MakePrimaryDevice(bool On);
 | 
			
		||||
@@ -66,6 +67,7 @@ public:
 | 
			
		||||
  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;
 | 
			
		||||
  virtual int NumProvidedSystems(void) const;
 | 
			
		||||
  virtual bool IsTunedToTransponder(const cChannel *Channel);
 | 
			
		||||
protected:
 | 
			
		||||
  virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dvbosd.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dvbosd.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbosd.c 1.32 2007/09/16 08:55:54 kls Exp $
 | 
			
		||||
 * $Id: dvbosd.c 2.0 2007/09/16 08:55:54 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "dvbosd.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dvbosd.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dvbosd.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbosd.h 1.19 2007/08/25 13:49:34 kls Exp $
 | 
			
		||||
 * $Id: dvbosd.h 2.0 2007/08/25 13:49:34 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DVBOSD_H
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbplayer.c 1.48 2008/02/09 15:10:54 kls Exp $
 | 
			
		||||
 * $Id: dvbplayer.c 2.0 2008/02/09 15:10:54 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "dvbplayer.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbplayer.h 1.2 2002/06/23 10:13:51 kls Exp $
 | 
			
		||||
 * $Id: dvbplayer.h 2.0 2002/06/23 10:13:51 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DVBPLAYER_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dvbspu.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dvbspu.c
									
									
									
									
									
								
							@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * parts of this file are derived from the OMS program.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbspu.c 1.22 2007/02/03 10:13:18 kls Exp $
 | 
			
		||||
 * $Id: dvbspu.c 2.0 2007/02/03 10:13:18 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "dvbspu.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dvbspu.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dvbspu.h
									
									
									
									
									
								
							@@ -8,7 +8,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * parts of this file are derived from the OMS program.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbspu.h 1.12 2006/04/17 12:47:29 kls Exp $
 | 
			
		||||
 * $Id: dvbspu.h 2.0 2006/04/17 12:47:29 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DVBSPU_H
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@
 | 
			
		||||
 * Original author: Marco Schl<68><6C>ler <marco@lordzodiac.de>
 | 
			
		||||
 * With some input from the "subtitle plugin" by Pekka Virtanen <pekka.virtanen@sci.fi>
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbsubtitle.c 1.3 2007/11/25 13:33:08 kls Exp $
 | 
			
		||||
 * $Id: dvbsubtitle.c 2.0 2007/11/25 13:33:08 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "dvbsubtitle.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * Original author: Marco Schl<68><6C>ler <marco@lordzodiac.de>
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: dvbsubtitle.h 1.1 2007/10/14 14:02:46 kls Exp $
 | 
			
		||||
 * $Id: dvbsubtitle.h 2.0 2007/10/14 14:02:46 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __DVBSUBTITLE_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								eit.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								eit.c
									
									
									
									
									
								
							@@ -8,7 +8,7 @@
 | 
			
		||||
 * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
 | 
			
		||||
 * Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: eit.c 1.126 2007/08/26 10:56:33 kls Exp $
 | 
			
		||||
 * $Id: eit.c 2.1 2008/04/13 11:27:06 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "eit.h"
 | 
			
		||||
@@ -300,9 +300,9 @@ cTDT::cTDT(const u_char *Data)
 | 
			
		||||
  if (diff > 2) {
 | 
			
		||||
     mutex.Lock();
 | 
			
		||||
     if (abs(diff - lastDiff) < 3) {
 | 
			
		||||
        isyslog("System Time = %s (%ld)", *TimeToString(loctim), loctim);
 | 
			
		||||
        isyslog("Local Time  = %s (%ld)", *TimeToString(sattim), sattim);
 | 
			
		||||
        if (stime(&sattim) < 0)
 | 
			
		||||
        if (stime(&sattim) == 0)
 | 
			
		||||
           isyslog("system time changed from %s (%ld) to %s (%ld)", *TimeToString(loctim), loctim, *TimeToString(sattim), sattim);
 | 
			
		||||
        else
 | 
			
		||||
           esyslog("ERROR while setting system time: %m");
 | 
			
		||||
        }
 | 
			
		||||
     lastDiff = diff;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								eit.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								eit.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: eit.h 1.30 2003/12/21 14:51:50 kls Exp $
 | 
			
		||||
 * $Id: eit.h 2.0 2003/12/21 14:51:50 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __EIT_H
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: eitscan.c 1.30 2006/01/07 14:10:17 kls Exp $
 | 
			
		||||
 * $Id: eitscan.c 2.0 2006/01/07 14:10:17 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "eitscan.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: eitscan.h 1.9 2005/09/04 10:51:35 kls Exp $
 | 
			
		||||
 * $Id: eitscan.h 2.0 2005/09/04 10:51:35 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __EITSCAN_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								epg.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								epg.c
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 * Original version (as used in VDR before 1.3.0) written by
 | 
			
		||||
 * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: epg.c 1.83 2008/02/16 16:09:12 kls Exp $
 | 
			
		||||
 * $Id: epg.c 2.0 2008/02/16 16:09:12 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "epg.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								epg.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								epg.h
									
									
									
									
									
								
							@@ -7,7 +7,7 @@
 | 
			
		||||
 * Original version (as used in VDR before 1.3.0) written by
 | 
			
		||||
 * Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: epg.h 1.35 2006/10/07 13:47:19 kls Exp $
 | 
			
		||||
 * $Id: epg.h 2.0 2006/10/07 13:47:19 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __EPG_H
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
# See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
# how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: epg2html.pl 1.7 2006/04/17 12:19:08 kls Exp $
 | 
			
		||||
# $Id: epg2html.pl 2.0 2006/04/17 12:19:08 kls Exp $
 | 
			
		||||
 | 
			
		||||
@Index = ();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								filter.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								filter.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: filter.c 1.4 2004/01/11 13:31:34 kls Exp $
 | 
			
		||||
 * $Id: filter.c 2.0 2004/01/11 13:31:34 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "filter.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								filter.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								filter.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: filter.h 1.3 2004/01/11 13:31:59 kls Exp $
 | 
			
		||||
 * $Id: filter.h 2.0 2004/01/11 13:31:59 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __FILTER_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								font.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								font.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: font.c 1.25 2008/03/01 10:19:41 kls Exp $
 | 
			
		||||
 * $Id: font.c 2.0 2008/03/01 10:19:41 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "font.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								font.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								font.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: font.h 1.20 2007/06/23 10:09:14 kls Exp $
 | 
			
		||||
 * $Id: font.h 2.0 2007/06/23 10:09:14 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __FONT_H
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
# See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
# how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: i18n-to-gettext.pl 1.6 2007/11/04 10:57:36 kls Exp $
 | 
			
		||||
# $Id: i18n-to-gettext.pl 2.0 2007/11/04 10:57:36 kls Exp $
 | 
			
		||||
 | 
			
		||||
# How to convert an actual plugin:
 | 
			
		||||
#
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								i18n.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								i18n.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: i18n.c 1.319 2008/01/19 12:07:11 kls Exp $
 | 
			
		||||
 * $Id: i18n.c 2.0 2008/01/19 12:07:11 kls Exp $
 | 
			
		||||
 *
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								i18n.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								i18n.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: i18n.h 1.25 2008/01/19 11:56:19 kls Exp $
 | 
			
		||||
 * $Id: i18n.h 2.0 2008/01/19 11:56:19 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __I18N_H
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: interface.c 1.77 2008/02/10 15:49:15 kls Exp $
 | 
			
		||||
 * $Id: interface.c 2.0 2008/02/10 15:49:15 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "interface.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: interface.h 1.31 2004/05/01 11:11:13 kls Exp $
 | 
			
		||||
 * $Id: interface.h 2.0 2004/05/01 11:11:13 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __INTERFACE_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								keys.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								keys.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: keys.c 1.17 2008/02/10 14:08:48 kls Exp $
 | 
			
		||||
 * $Id: keys.c 2.0 2008/02/10 14:08:48 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "keys.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								keys.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								keys.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: keys.h 1.14 2007/08/26 12:34:50 kls Exp $
 | 
			
		||||
 * $Id: keys.h 2.0 2007/08/26 12:34:50 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __KEYS_H
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
#
 | 
			
		||||
# Makefile for a libsi
 | 
			
		||||
#
 | 
			
		||||
# $Id: Makefile 1.6 2006/05/26 10:40:19 kls Exp $
 | 
			
		||||
# $Id: Makefile 2.0 2006/05/26 10:40:19 kls Exp $
 | 
			
		||||
 | 
			
		||||
### The C++ compiler and options:
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: descriptor.c 1.22 2007/02/03 11:45:58 kls Exp $
 | 
			
		||||
 *   $Id: descriptor.c 2.0 2007/02/03 11:45:58 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: descriptor.h 1.16 2007/02/03 11:45:58 kls Exp $
 | 
			
		||||
 *   $Id: descriptor.h 2.0 2007/02/03 11:45:58 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
#!/usr/bin/perl
 | 
			
		||||
 | 
			
		||||
# $Id: gendescr.pl 1.2 2003/12/13 10:40:53 kls Exp $
 | 
			
		||||
# $Id: gendescr.pl 2.0 2003/12/13 10:40:53 kls Exp $
 | 
			
		||||
 | 
			
		||||
print "Name (ohne ...Descriptor):";
 | 
			
		||||
$name=<STDIN>;
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: headers.h 1.9 2007/02/03 11:45:58 kls Exp $
 | 
			
		||||
 *   $Id: headers.h 2.0 2007/02/03 11:45:58 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: section.c 1.5 2006/04/14 10:53:44 kls Exp $
 | 
			
		||||
 *   $Id: section.c 2.0 2006/04/14 10:53:44 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: section.h 1.4 2006/04/14 10:53:44 kls Exp $
 | 
			
		||||
 *   $Id: section.h 2.0 2006/04/14 10:53:44 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: si.c 1.25 2008/03/05 17:00:55 kls Exp $
 | 
			
		||||
 *   $Id: si.c 2.0 2008/03/05 17:00:55 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: si.h 1.17 2007/04/22 13:32:09 kls Exp $
 | 
			
		||||
 *   $Id: si.h 2.0 2007/04/22 13:32:09 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: util.c 1.7 2006/02/18 11:17:50 kls Exp $
 | 
			
		||||
 *   $Id: util.c 2.0 2006/02/18 11:17:50 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,7 +6,7 @@
 | 
			
		||||
 *   the Free Software Foundation; either version 2 of the License, or     *
 | 
			
		||||
 *   (at your option) any later version.                                   *
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 *   $Id: util.h 1.7 2006/02/25 10:13:28 kls Exp $
 | 
			
		||||
 *   $Id: util.h 2.0 2006/02/25 10:13:28 kls Exp $
 | 
			
		||||
 *                                                                         *
 | 
			
		||||
 ***************************************************************************/
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								lirc.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								lirc.c
									
									
									
									
									
								
							@@ -6,7 +6,7 @@
 | 
			
		||||
 *
 | 
			
		||||
 * LIRC support added by Carsten Koch <Carsten.Koch@icem.de>  2000-06-16.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: lirc.c 1.15 2006/05/28 08:48:13 kls Exp $
 | 
			
		||||
 * $Id: lirc.c 2.0 2006/05/28 08:48:13 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "lirc.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								lirc.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								lirc.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: lirc.h 1.4 2006/01/27 16:00:19 kls Exp $
 | 
			
		||||
 * $Id: lirc.h 2.0 2006/01/27 16:00:19 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __LIRC_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										80
									
								
								menu.c
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								menu.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: menu.c 1.482 2008/03/16 11:15:28 kls Exp $
 | 
			
		||||
 * $Id: menu.c 2.1 2008/04/12 11:37:17 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "menu.h"
 | 
			
		||||
@@ -182,70 +182,6 @@ eOSState cMenuEditSrcItem::ProcessKey(eKeys Key)
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// --- cMenuEditMapItem ------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class cMenuEditMapItem : public cMenuEditItem {
 | 
			
		||||
protected:
 | 
			
		||||
  int *value;
 | 
			
		||||
  const tChannelParameterMap *map;
 | 
			
		||||
  const char *zeroString;
 | 
			
		||||
  virtual void Set(void);
 | 
			
		||||
public:
 | 
			
		||||
  cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString = NULL);
 | 
			
		||||
  virtual eOSState ProcessKey(eKeys Key);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
cMenuEditMapItem::cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString)
 | 
			
		||||
:cMenuEditItem(Name)
 | 
			
		||||
{
 | 
			
		||||
  value = Value;
 | 
			
		||||
  map = Map;
 | 
			
		||||
  zeroString = ZeroString;
 | 
			
		||||
  Set();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cMenuEditMapItem::Set(void)
 | 
			
		||||
{
 | 
			
		||||
  int n = MapToUser(*value, map);
 | 
			
		||||
  if (n == 999)
 | 
			
		||||
     SetValue(tr("auto"));
 | 
			
		||||
  else if (n == 0 && zeroString)
 | 
			
		||||
     SetValue(zeroString);
 | 
			
		||||
  else if (n >= 0) {
 | 
			
		||||
     char buf[16];
 | 
			
		||||
     snprintf(buf, sizeof(buf), "%d", n);
 | 
			
		||||
     SetValue(buf);
 | 
			
		||||
     }
 | 
			
		||||
  else
 | 
			
		||||
     SetValue("???");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
 | 
			
		||||
{
 | 
			
		||||
  eOSState state = cMenuEditItem::ProcessKey(Key);
 | 
			
		||||
 | 
			
		||||
  if (state == osUnknown) {
 | 
			
		||||
     int newValue = *value;
 | 
			
		||||
     int n = DriverIndex(*value, map);
 | 
			
		||||
     if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
 | 
			
		||||
        if (n-- > 0)
 | 
			
		||||
           newValue = map[n].driverValue;
 | 
			
		||||
        }
 | 
			
		||||
     else if (NORMALKEY(Key) == kRight) {
 | 
			
		||||
        if (map[++n].userValue >= 0)
 | 
			
		||||
           newValue = map[n].driverValue;
 | 
			
		||||
        }
 | 
			
		||||
     else
 | 
			
		||||
        return state;
 | 
			
		||||
     if (newValue != *value) {
 | 
			
		||||
        *value = newValue;
 | 
			
		||||
        Set();
 | 
			
		||||
        }
 | 
			
		||||
     state = osContinue;
 | 
			
		||||
     }
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// --- cMenuEditChannel ------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
class cMenuEditChannel : public cOsdMenu {
 | 
			
		||||
@@ -306,15 +242,19 @@ void cMenuEditChannel::Setup(void)
 | 
			
		||||
  XXX*/
 | 
			
		||||
  // Parameters for specific types of sources:
 | 
			
		||||
  ST(" S ")  Add(new cMenuEditChrItem( tr("Polarization"), &data.polarization, "hvlr"));
 | 
			
		||||
  ST(" S ")  Add(new cMenuEditMapItem( tr("System"),       &data.system,       SystemValues));
 | 
			
		||||
  ST("CS ")  Add(new cMenuEditIntItem( tr("Srate"),        &data.srate));
 | 
			
		||||
  ST("CST")  Add(new cMenuEditMapItem( tr("Inversion"),    &data.inversion,    InversionValues, tr("off")));
 | 
			
		||||
  ST("CST")  Add(new cMenuEditMapItem( tr("CoderateH"),    &data.coderateH,    CoderateValues, tr("none")));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("CoderateL"),    &data.coderateL,    CoderateValues, tr("none")));
 | 
			
		||||
  ST("C T")  Add(new cMenuEditMapItem( tr("Modulation"),   &data.modulation,   ModulationValues, "QPSK"));
 | 
			
		||||
  ST("CST")  Add(new cMenuEditMapItem( tr("Inversion"),    &data.inversion,    InversionValues));
 | 
			
		||||
  ST("CST")  Add(new cMenuEditMapItem( tr("CoderateH"),    &data.coderateH,    CoderateValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("CoderateL"),    &data.coderateL,    CoderateValues));
 | 
			
		||||
  ST("CST")  Add(new cMenuEditMapItem( tr("Modulation"),   &data.modulation,   ModulationValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Bandwidth"),    &data.bandwidth,    BandwidthValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Transmission"), &data.transmission, TransmissionValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Guard"),        &data.guard,        GuardValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Hierarchy"),    &data.hierarchy,    HierarchyValues, tr("none")));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Hierarchy"),    &data.hierarchy,    HierarchyValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Alpha"),        &data.alpha,        AlphaValues));
 | 
			
		||||
  ST("  T")  Add(new cMenuEditMapItem( tr("Priority"),     &data.priority,     PriorityValues));
 | 
			
		||||
  ST(" S ")  Add(new cMenuEditMapItem( tr("Rolloff"),      &data.rollOff,      RollOffValues));
 | 
			
		||||
 | 
			
		||||
  SetCurrent(Get(current));
 | 
			
		||||
  Display();
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								menu.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								menu.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: menu.h 1.91 2008/02/10 16:01:53 kls Exp $
 | 
			
		||||
 * $Id: menu.h 2.0 2008/02/10 16:01:53 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MENU_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										60
									
								
								menuitems.c
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								menuitems.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: menuitems.c 1.58 2008/02/10 16:03:30 kls Exp $
 | 
			
		||||
 * $Id: menuitems.c 2.1 2008/04/12 12:05:25 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "menuitems.h"
 | 
			
		||||
@@ -936,6 +936,64 @@ eOSState cMenuEditTimeItem::ProcessKey(eKeys Key)
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// --- cMenuEditMapItem ------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
cMenuEditMapItem::cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString)
 | 
			
		||||
:cMenuEditItem(Name)
 | 
			
		||||
{
 | 
			
		||||
  value = Value;
 | 
			
		||||
  map = Map;
 | 
			
		||||
  zeroString = ZeroString;
 | 
			
		||||
  Set();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void cMenuEditMapItem::Set(void)
 | 
			
		||||
{
 | 
			
		||||
  const char *s = NULL;
 | 
			
		||||
  int n = MapToUser(*value, map, &s);
 | 
			
		||||
  if (n == 999)
 | 
			
		||||
     SetValue(tr("auto"));
 | 
			
		||||
  else if (n == 0 && zeroString)
 | 
			
		||||
     SetValue(zeroString);
 | 
			
		||||
  else if (n >= 0) {
 | 
			
		||||
     if (s)
 | 
			
		||||
        SetValue(s);
 | 
			
		||||
     else {
 | 
			
		||||
        char buf[16];
 | 
			
		||||
        snprintf(buf, sizeof(buf), "%d", n);
 | 
			
		||||
        SetValue(buf);
 | 
			
		||||
        }
 | 
			
		||||
     }
 | 
			
		||||
  else
 | 
			
		||||
     SetValue("???");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
eOSState cMenuEditMapItem::ProcessKey(eKeys Key)
 | 
			
		||||
{
 | 
			
		||||
  eOSState state = cMenuEditItem::ProcessKey(Key);
 | 
			
		||||
 | 
			
		||||
  if (state == osUnknown) {
 | 
			
		||||
     int newValue = *value;
 | 
			
		||||
     int n = DriverIndex(*value, map);
 | 
			
		||||
     if (NORMALKEY(Key) == kLeft) { // TODO might want to increase the delta if repeated quickly?
 | 
			
		||||
        if (n-- > 0)
 | 
			
		||||
           newValue = map[n].driverValue;
 | 
			
		||||
        }
 | 
			
		||||
     else if (NORMALKEY(Key) == kRight) {
 | 
			
		||||
        if (map[++n].userValue >= 0)
 | 
			
		||||
           newValue = map[n].driverValue;
 | 
			
		||||
        }
 | 
			
		||||
     else
 | 
			
		||||
        return state;
 | 
			
		||||
     if (newValue != *value) {
 | 
			
		||||
        *value = newValue;
 | 
			
		||||
        Set();
 | 
			
		||||
        }
 | 
			
		||||
     state = osContinue;
 | 
			
		||||
     }
 | 
			
		||||
  return state;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// --- cMenuSetupPage --------------------------------------------------------
 | 
			
		||||
 | 
			
		||||
cMenuSetupPage::cMenuSetupPage(void)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										13
									
								
								menuitems.h
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								menuitems.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: menuitems.h 1.25 2008/02/16 16:09:58 kls Exp $
 | 
			
		||||
 * $Id: menuitems.h 2.1 2008/04/12 12:03:59 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __MENUITEMS_H
 | 
			
		||||
@@ -160,6 +160,17 @@ public:
 | 
			
		||||
  virtual eOSState ProcessKey(eKeys Key);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
class cMenuEditMapItem : public cMenuEditItem {
 | 
			
		||||
protected:
 | 
			
		||||
  int *value;
 | 
			
		||||
  const tChannelParameterMap *map;
 | 
			
		||||
  const char *zeroString;
 | 
			
		||||
  virtual void Set(void);
 | 
			
		||||
public:
 | 
			
		||||
  cMenuEditMapItem(const char *Name, int *Value, const tChannelParameterMap *Map, const char *ZeroString = NULL);
 | 
			
		||||
  virtual eOSState ProcessKey(eKeys Key);
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
class cPlugin;
 | 
			
		||||
 | 
			
		||||
class cMenuSetupPage : public cOsdMenu {
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@
 | 
			
		||||
# See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
# how to reach the author.
 | 
			
		||||
#
 | 
			
		||||
# $Id: newplugin 1.41 2008/01/13 13:00:23 kls Exp $
 | 
			
		||||
# $Id: newplugin 2.0 2008/01/13 13:00:23 kls Exp $
 | 
			
		||||
 | 
			
		||||
$PLUGIN_NAME = $ARGV[0] || die "Usage: newplugin <name>\n";
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										38
									
								
								nit.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								nit.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: nit.c 1.18 2008/02/08 13:48:31 kls Exp $
 | 
			
		||||
 * $Id: nit.c 2.1 2008/04/12 12:06:40 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "nit.h"
 | 
			
		||||
@@ -127,8 +127,13 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                 int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 100;
 | 
			
		||||
                 static char Polarizations[] = { 'h', 'v', 'l', 'r' };
 | 
			
		||||
                 char Polarization = Polarizations[sd->getPolarization()];
 | 
			
		||||
                 static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
 | 
			
		||||
                 static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
 | 
			
		||||
                 int CodeRate = CodeRates[sd->getFecInner()];
 | 
			
		||||
                 static int Modulations[] = { DVBFE_MOD_AUTO, DVBFE_MOD_QPSK, DVBFE_MOD_8PSK, DVBFE_MOD_QAM16 };
 | 
			
		||||
                 int Modulation = Modulations[sd->getModulationType()];
 | 
			
		||||
                 int System = sd->getModulationSystem() ? DVBFE_DELSYS_DVBS2 : DVBFE_DELSYS_DVBS;
 | 
			
		||||
                 static int RollOffs[] = { DVBFE_ROLLOFF_35, DVBFE_ROLLOFF_25, DVBFE_ROLLOFF_20, DVBFE_ROLLOFF_UNKNOWN };
 | 
			
		||||
                 int RollOff = sd->getModulationSystem() ? RollOffs[sd->getRollOff()] : DVBFE_ROLLOFF_UNKNOWN;
 | 
			
		||||
                 int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
 | 
			
		||||
                 if (ThisNIT >= 0) {
 | 
			
		||||
                    for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
@@ -155,14 +160,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                                  }
 | 
			
		||||
                              }
 | 
			
		||||
                           if (ISTRANSPONDER(cChannel::Transponder(Frequency, Polarization), Transponder())) // only modify channels if we're actually receiving this transponder
 | 
			
		||||
                              Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate);
 | 
			
		||||
                              Channel->SetSatTransponderData(Source, Frequency, Polarization, SymbolRate, CodeRate, Modulation, System, RollOff);
 | 
			
		||||
                           }
 | 
			
		||||
                        }
 | 
			
		||||
                    if (!found) {
 | 
			
		||||
                       for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                           cChannel *Channel = new cChannel;
 | 
			
		||||
                           Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                           if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate))
 | 
			
		||||
                           if (Channel->SetSatTransponderData(Source, Frequencies[n], Polarization, SymbolRate, CodeRate, Modulation, System, RollOff))
 | 
			
		||||
                              EITScanner.AddTransponder(Channel);
 | 
			
		||||
                           else
 | 
			
		||||
                              delete Channel;
 | 
			
		||||
@@ -176,9 +181,9 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                 int Source = cSource::FromData(cSource::stCable);
 | 
			
		||||
                 int Frequency = Frequencies[0] = BCD2INT(sd->getFrequency()) / 10;
 | 
			
		||||
                 //XXX FEC_outer???
 | 
			
		||||
                 static int CodeRates[] = { FEC_NONE, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_AUTO, FEC_NONE };
 | 
			
		||||
                 static int CodeRates[] = { DVBFE_FEC_NONE, DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_8_9, DVBFE_FEC_3_5, DVBFE_FEC_4_5, DVBFE_FEC_9_10, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_NONE };
 | 
			
		||||
                 int CodeRate = CodeRates[sd->getFecInner()];
 | 
			
		||||
                 static int Modulations[] = { QPSK, QAM_16, QAM_32, QAM_64, QAM_128, QAM_256, QAM_AUTO };
 | 
			
		||||
                 static int Modulations[] = { DVBFE_MOD_NONE, DVBFE_MOD_QAM16, DVBFE_MOD_QAM32, DVBFE_MOD_QAM64, DVBFE_MOD_QAM128, DVBFE_MOD_QAM256, QAM_AUTO };
 | 
			
		||||
                 int Modulation = Modulations[min(sd->getModulation(), 6)];
 | 
			
		||||
                 int SymbolRate = BCD2INT(sd->getSymbolRate()) / 10;
 | 
			
		||||
                 if (ThisNIT >= 0) {
 | 
			
		||||
@@ -226,19 +231,22 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                 SI::TerrestrialDeliverySystemDescriptor *sd = (SI::TerrestrialDeliverySystemDescriptor *)d;
 | 
			
		||||
                 int Source = cSource::FromData(cSource::stTerr);
 | 
			
		||||
                 int Frequency = Frequencies[0] = sd->getFrequency() * 10;
 | 
			
		||||
                 static int Bandwidths[] = { BANDWIDTH_8_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_6_MHZ, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO, BANDWIDTH_AUTO };
 | 
			
		||||
                 static int Bandwidths[] = { DVBFE_BANDWIDTH_8_MHZ, DVBFE_BANDWIDTH_7_MHZ, DVBFE_BANDWIDTH_6_MHZ, DVBFE_BANDWIDTH_5_MHZ, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO, DVBFE_BANDWIDTH_AUTO };
 | 
			
		||||
                 int Bandwidth = Bandwidths[sd->getBandwidth()];
 | 
			
		||||
                 static int Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
 | 
			
		||||
                 static int Constellations[] = { DVBFE_MOD_QPSK, DVBFE_MOD_QAM16, DVBFE_MOD_QAM64, DVBFE_MOD_AUTO };
 | 
			
		||||
                 int Constellation = Constellations[sd->getConstellation()];
 | 
			
		||||
                 static int Hierarchies[] = { HIERARCHY_NONE, HIERARCHY_1, HIERARCHY_2, HIERARCHY_4, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO, HIERARCHY_AUTO };
 | 
			
		||||
                 int Hierarchy = Hierarchies[sd->getHierarchy()];
 | 
			
		||||
                 static int CodeRates[] = { FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8, FEC_AUTO, FEC_AUTO, FEC_AUTO };
 | 
			
		||||
                 static int CodeRates[] = { DVBFE_FEC_1_2, DVBFE_FEC_2_3, DVBFE_FEC_3_4, DVBFE_FEC_5_6, DVBFE_FEC_7_8, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO, DVBFE_FEC_AUTO };
 | 
			
		||||
                 int CodeRateHP = CodeRates[sd->getCodeRateHP()];
 | 
			
		||||
                 int CodeRateLP = CodeRates[sd->getCodeRateLP()];
 | 
			
		||||
                 static int GuardIntervals[] = { GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16, GUARD_INTERVAL_1_8, GUARD_INTERVAL_1_4 };
 | 
			
		||||
                 static int GuardIntervals[] = { DVBFE_GUARD_INTERVAL_1_32, DVBFE_GUARD_INTERVAL_1_16, DVBFE_GUARD_INTERVAL_1_8, DVBFE_GUARD_INTERVAL_1_4 };
 | 
			
		||||
                 int GuardInterval = GuardIntervals[sd->getGuardInterval()];
 | 
			
		||||
                 static int TransmissionModes[] = { TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K, TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_AUTO };
 | 
			
		||||
                 static int TransmissionModes[] = { DVBFE_TRANSMISSION_MODE_2K, DVBFE_TRANSMISSION_MODE_8K, DVBFE_TRANSMISSION_MODE_4K, DVBFE_TRANSMISSION_MODE_AUTO };
 | 
			
		||||
                 int TransmissionMode = TransmissionModes[sd->getTransmissionMode()];
 | 
			
		||||
                 static int Priorities[] = { DVBFE_STREAM_PRIORITY_LP, DVBFE_STREAM_PRIORITY_HP };
 | 
			
		||||
                 int Priority = Priorities[sd->getPriority()];
 | 
			
		||||
                 static int Alphas[] = { 0, DVBFE_ALPHA_1, DVBFE_ALPHA_2, DVBFE_ALPHA_4 };
 | 
			
		||||
                 int Alpha = Alphas[sd->getHierarchy() & 3];
 | 
			
		||||
                 int Hierarchy = Alpha ? DVBFE_HIERARCHY_ON : DVBFE_HIERARCHY_OFF;
 | 
			
		||||
                 if (ThisNIT >= 0) {
 | 
			
		||||
                    for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                        if (ISTRANSPONDER(Frequencies[n] / 1000000, Transponder())) {
 | 
			
		||||
@@ -264,14 +272,14 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
                                  }
 | 
			
		||||
                              }
 | 
			
		||||
                           if (ISTRANSPONDER(Frequency / 1000000, Transponder())) // only modify channels if we're actually receiving this transponder
 | 
			
		||||
                              Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode);
 | 
			
		||||
                              Channel->SetTerrTransponderData(Source, Frequency, Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority);
 | 
			
		||||
                           }
 | 
			
		||||
                        }
 | 
			
		||||
                    if (!found) {
 | 
			
		||||
                       for (int n = 0; n < NumFrequencies; n++) {
 | 
			
		||||
                           cChannel *Channel = new cChannel;
 | 
			
		||||
                           Channel->SetId(ts.getOriginalNetworkId(), ts.getTransportStreamId(), 0, 0);
 | 
			
		||||
                           if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode))
 | 
			
		||||
                           if (Channel->SetTerrTransponderData(Source, Frequencies[n], Bandwidth, Constellation, Hierarchy, CodeRateHP, CodeRateLP, GuardInterval, TransmissionMode, Alpha, Priority))
 | 
			
		||||
                              EITScanner.AddTransponder(Channel);
 | 
			
		||||
                           else
 | 
			
		||||
                              delete Channel;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								nit.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								nit.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: nit.h 1.3 2007/06/10 08:50:21 kls Exp $
 | 
			
		||||
 * $Id: nit.h 2.0 2007/06/10 08:50:21 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __NIT_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								osd.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								osd.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: osd.c 1.75 2007/10/12 12:38:36 kls Exp $
 | 
			
		||||
 * $Id: osd.c 2.0 2007/10/12 12:38:36 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "osd.h"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								osd.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								osd.h
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: osd.h 1.58 2007/10/12 14:28:44 kls Exp $
 | 
			
		||||
 * $Id: osd.h 2.0 2007/10/12 14:28:44 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __OSD_H
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: osdbase.c 1.32 2008/02/17 11:33:04 kls Exp $
 | 
			
		||||
 * $Id: osdbase.c 2.0 2008/02/17 11:33:04 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "osdbase.h"
 | 
			
		||||
 
 | 
			
		||||
@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: osdbase.h 1.17 2007/11/03 14:50:52 kls Exp $
 | 
			
		||||
 * $Id: osdbase.h 2.0 2007/11/03 14:50:52 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __OSDBASE_H
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										3
									
								
								pat.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								pat.c
									
									
									
									
									
								
							@@ -4,7 +4,7 @@
 | 
			
		||||
 * See the main source file 'vdr.c' for copyright information and
 | 
			
		||||
 * how to reach the author.
 | 
			
		||||
 *
 | 
			
		||||
 * $Id: pat.c 1.20 2008/02/08 13:48:31 kls Exp $
 | 
			
		||||
 * $Id: pat.c 2.1 2008/04/12 13:34:50 kls Exp $
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "pat.h"
 | 
			
		||||
@@ -343,6 +343,7 @@ void cPatFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length
 | 
			
		||||
            switch (stream.getStreamType()) {
 | 
			
		||||
              case 1: // STREAMTYPE_11172_VIDEO
 | 
			
		||||
              case 2: // STREAMTYPE_13818_VIDEO
 | 
			
		||||
//TODO        case 0x1B: // MPEG4
 | 
			
		||||
                      Vpid = stream.getPid();
 | 
			
		||||
                      break;
 | 
			
		||||
              case 3: // STREAMTYPE_11172_AUDIO
 | 
			
		||||
 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user