mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Implemented "Device Bonding"
This commit is contained in:
parent
a964269fe9
commit
a49ce434f6
6
HISTORY
6
HISTORY
@ -6743,7 +6743,7 @@ Video Disk Recorder Revision History
|
|||||||
extends over TS packet boundaries is now done by locally skipping TS packets
|
extends over TS packet boundaries is now done by locally skipping TS packets
|
||||||
in cFrameDetector.
|
in cFrameDetector.
|
||||||
|
|
||||||
2011-10-16: Version 1.7.22
|
2011-12-04: Version 1.7.22
|
||||||
|
|
||||||
- Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
|
- Fixed scaling subtitles in case the primary device's GetVideoSize() function doesn't
|
||||||
return actual values (thanks to Luca Olivetti).
|
return actual values (thanks to Luca Olivetti).
|
||||||
@ -6765,3 +6765,7 @@ Video Disk Recorder Revision History
|
|||||||
- Temporarily switching free devices to transponders in order to have their running
|
- Temporarily switching free devices to transponders in order to have their running
|
||||||
status updated is now done by marking the devices as "occupied" for a certain
|
status updated is now done by marking the devices as "occupied" for a certain
|
||||||
amount of time.
|
amount of time.
|
||||||
|
- The new setup options "LNB/Device n connected to sat cable" can be used to define
|
||||||
|
which DVB-S devices are connected to the same sat cable and are therefore "bonded".
|
||||||
|
This obsoletes the LNBSHARE patch. Users of the LNBSHARE patch will need to newly
|
||||||
|
set up their sat devices with the above options.
|
||||||
|
11
INSTALL
11
INSTALL
@ -392,6 +392,17 @@ according to EN50494 (aka "Unicable(TM)", "OLT(TM)", "SatCR", "Single Cable
|
|||||||
Distribution", "Channel Stacking System" or "Single Cable Interface") uses
|
Distribution", "Channel Stacking System" or "Single Cable Interface") uses
|
||||||
the file "scr.conf" to specify which SCR channels use which user band frequency.
|
the file "scr.conf" to specify which SCR channels use which user band frequency.
|
||||||
|
|
||||||
|
If DVB-S devices need to be connected to the same satellite cable, but no
|
||||||
|
"Satellite Channel Routing" is available, they can be set to be "bonded" in
|
||||||
|
the Setup/LNB menu. Bonded devices can only be tuned to the same polarization
|
||||||
|
and frequency band, which reduces the number of potentially receivable channels.
|
||||||
|
|
||||||
|
Note that it doesn't make sense to use "Satellite Channel Routing" and
|
||||||
|
"Device Bonding" at the same time with the same devices. If you use either
|
||||||
|
of these methods, it is necessary that your devices are always created in the
|
||||||
|
same sequence when the drivers are loaded. You may need to configure some
|
||||||
|
proper "udev" rules to make sure this happens.
|
||||||
|
|
||||||
Running VDR with DVB-C (cable) or DVB-T (terrestrial):
|
Running VDR with DVB-C (cable) or DVB-T (terrestrial):
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
|
|
||||||
|
8
MANUAL
8
MANUAL
@ -732,12 +732,18 @@ Version 1.6
|
|||||||
|
|
||||||
LNB:
|
LNB:
|
||||||
|
|
||||||
|
Use DiSEqC = no Generally turns DiSEqC support on or off.
|
||||||
|
|
||||||
SLOF = 11700 The switching frequency (in MHz) between low and
|
SLOF = 11700 The switching frequency (in MHz) between low and
|
||||||
high LOF
|
high LOF
|
||||||
Low LNB frequency = 9750 The LNB's low and high local oscillator frequencies
|
Low LNB frequency = 9750 The LNB's low and high local oscillator frequencies
|
||||||
High LNB frequency = 10600 (in MHz, these have no meaning for DVB-C receivers)
|
High LNB frequency = 10600 (in MHz, these have no meaning for DVB-C receivers)
|
||||||
|
|
||||||
Use DiSEqC = no Generally turns DiSEqC support on or off.
|
Device n connected to sat cable = own
|
||||||
|
Defines whether DVB-S device n has its own satellite cable,
|
||||||
|
or is "bonded" with another device. All DVB-S devices that
|
||||||
|
are connected to the same sat cable must be set to the same
|
||||||
|
number here.
|
||||||
|
|
||||||
CAM:
|
CAM:
|
||||||
|
|
||||||
|
69
config.c
69
config.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.c 2.15 2011/08/20 09:12:05 kls Exp $
|
* $Id: config.c 2.16 2011/12/03 15:21:30 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
@ -63,6 +63,69 @@ bool cSVDRPhost::Accepts(in_addr_t Address)
|
|||||||
return (Address & mask) == (addr.s_addr & mask);
|
return (Address & mask) == (addr.s_addr & mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// --- cSatCableNumbers ------------------------------------------------------
|
||||||
|
|
||||||
|
cSatCableNumbers::cSatCableNumbers(int Size, const char *s)
|
||||||
|
{
|
||||||
|
size = Size;
|
||||||
|
array = MALLOC(int, size);
|
||||||
|
memset(array, size * sizeof(int), 0);
|
||||||
|
FromString(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
cSatCableNumbers::~cSatCableNumbers()
|
||||||
|
{
|
||||||
|
free(array);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cSatCableNumbers::FromString(const char *s)
|
||||||
|
{
|
||||||
|
char *t;
|
||||||
|
int i = 0;
|
||||||
|
const char *p = s;
|
||||||
|
while (p && *p) {
|
||||||
|
int n = strtol(p, &t, 10);
|
||||||
|
if (t != p) {
|
||||||
|
if (i < size)
|
||||||
|
array[i++] = n;
|
||||||
|
else {
|
||||||
|
esyslog("ERROR: too many sat cable numbers in '%s'", s);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
esyslog("ERROR: invalid sat cable number in '%s'", s);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
p = skipspace(t);
|
||||||
|
}
|
||||||
|
for ( ; i < size; i++)
|
||||||
|
array[i] = 0;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
cString cSatCableNumbers::ToString(void)
|
||||||
|
{
|
||||||
|
cString s("");
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
s = cString::sprintf("%s%d ", *s, array[i]);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
int cSatCableNumbers::FirstDeviceIndex(int DeviceIndex) const
|
||||||
|
{
|
||||||
|
if (0 <= DeviceIndex && DeviceIndex < size) {
|
||||||
|
if (int CableNr = array[DeviceIndex]) {
|
||||||
|
for (int i = 0; i < size; i++) {
|
||||||
|
if (i < DeviceIndex && array[i] == CableNr)
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// --- cNestedItem -----------------------------------------------------------
|
// --- cNestedItem -----------------------------------------------------------
|
||||||
|
|
||||||
cNestedItem::cNestedItem(const char *Text, bool WithSubItems)
|
cNestedItem::cNestedItem(const char *Text, bool WithSubItems)
|
||||||
@ -396,6 +459,7 @@ cSetup::cSetup(void)
|
|||||||
CurrentVolume = MAXVOLUME;
|
CurrentVolume = MAXVOLUME;
|
||||||
CurrentDolby = 0;
|
CurrentDolby = 0;
|
||||||
InitialChannel = "";
|
InitialChannel = "";
|
||||||
|
DeviceBondings = "";
|
||||||
InitialVolume = -1;
|
InitialVolume = -1;
|
||||||
ChannelsWrap = 0;
|
ChannelsWrap = 0;
|
||||||
EmergencyExit = 1;
|
EmergencyExit = 1;
|
||||||
@ -405,6 +469,7 @@ cSetup& cSetup::operator= (const cSetup &s)
|
|||||||
{
|
{
|
||||||
memcpy(&__BeginData__, &s.__BeginData__, (char *)&s.__EndData__ - (char *)&s.__BeginData__);
|
memcpy(&__BeginData__, &s.__BeginData__, (char *)&s.__EndData__ - (char *)&s.__BeginData__);
|
||||||
InitialChannel = s.InitialChannel;
|
InitialChannel = s.InitialChannel;
|
||||||
|
DeviceBondings = s.DeviceBondings;
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -589,6 +654,7 @@ bool cSetup::Parse(const char *Name, const char *Value)
|
|||||||
else if (!strcasecmp(Name, "CurrentDolby")) CurrentDolby = atoi(Value);
|
else if (!strcasecmp(Name, "CurrentDolby")) CurrentDolby = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "InitialChannel")) InitialChannel = Value;
|
else if (!strcasecmp(Name, "InitialChannel")) InitialChannel = Value;
|
||||||
else if (!strcasecmp(Name, "InitialVolume")) InitialVolume = atoi(Value);
|
else if (!strcasecmp(Name, "InitialVolume")) InitialVolume = atoi(Value);
|
||||||
|
else if (!strcasecmp(Name, "DeviceBondings")) DeviceBondings = Value;
|
||||||
else if (!strcasecmp(Name, "ChannelsWrap")) ChannelsWrap = atoi(Value);
|
else if (!strcasecmp(Name, "ChannelsWrap")) ChannelsWrap = atoi(Value);
|
||||||
else if (!strcasecmp(Name, "EmergencyExit")) EmergencyExit = atoi(Value);
|
else if (!strcasecmp(Name, "EmergencyExit")) EmergencyExit = atoi(Value);
|
||||||
else
|
else
|
||||||
@ -685,6 +751,7 @@ bool cSetup::Save(void)
|
|||||||
Store("CurrentDolby", CurrentDolby);
|
Store("CurrentDolby", CurrentDolby);
|
||||||
Store("InitialChannel", InitialChannel);
|
Store("InitialChannel", InitialChannel);
|
||||||
Store("InitialVolume", InitialVolume);
|
Store("InitialVolume", InitialVolume);
|
||||||
|
Store("DeviceBondings", DeviceBondings);
|
||||||
Store("ChannelsWrap", ChannelsWrap);
|
Store("ChannelsWrap", ChannelsWrap);
|
||||||
Store("EmergencyExit", EmergencyExit);
|
Store("EmergencyExit", EmergencyExit);
|
||||||
|
|
||||||
|
22
config.h
22
config.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: config.h 2.35 2011/09/10 09:45:55 kls Exp $
|
* $Id: config.h 2.36 2011/12/03 14:19:52 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __CONFIG_H
|
#ifndef __CONFIG_H
|
||||||
@ -61,6 +61,25 @@ public:
|
|||||||
bool Accepts(in_addr_t Address);
|
bool Accepts(in_addr_t Address);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class cSatCableNumbers {
|
||||||
|
private:
|
||||||
|
int size;
|
||||||
|
int *array;
|
||||||
|
public:
|
||||||
|
cSatCableNumbers(int Size, const char *s = NULL);
|
||||||
|
~cSatCableNumbers();
|
||||||
|
int Size(void) const { return size; }
|
||||||
|
int *Array(void) { return array; }
|
||||||
|
bool FromString(const char *s);
|
||||||
|
cString ToString(void);
|
||||||
|
int FirstDeviceIndex(int DeviceIndex) const;
|
||||||
|
///< Returns the first device index (starting at 0) that uses the same
|
||||||
|
///< sat cable number as the device with the given DeviceIndex.
|
||||||
|
///< If the given device does not use the same sat cable as any other device,
|
||||||
|
///< or if the resulting value would be the same as DeviceIndex,
|
||||||
|
///< or if DeviceIndex is out of range, -1 is returned.
|
||||||
|
};
|
||||||
|
|
||||||
template<class T> class cConfig : public cList<T> {
|
template<class T> class cConfig : public cList<T> {
|
||||||
private:
|
private:
|
||||||
char *fileName;
|
char *fileName;
|
||||||
@ -292,6 +311,7 @@ public:
|
|||||||
int EmergencyExit;
|
int EmergencyExit;
|
||||||
int __EndData__;
|
int __EndData__;
|
||||||
cString InitialChannel;
|
cString InitialChannel;
|
||||||
|
cString DeviceBondings;
|
||||||
cSetup(void);
|
cSetup(void);
|
||||||
cSetup& operator= (const cSetup &s);
|
cSetup& operator= (const cSetup &s);
|
||||||
bool Load(const char *FileName);
|
bool Load(const char *FileName);
|
||||||
|
8
device.c
8
device.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.c 2.43 2011/10/16 14:01:30 kls Exp $
|
* $Id: device.c 2.44 2011/10/16 14:36:43 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
@ -640,12 +640,12 @@ const cChannel *cDevice::GetCurrentlyTunedTransponder(void) const
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDevice::IsTunedToTransponder(const cChannel *Channel)
|
bool cDevice::IsTunedToTransponder(const cChannel *Channel) const
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDevice::MaySwitchTransponder(void)
|
bool cDevice::MaySwitchTransponder(const cChannel *Channel) const
|
||||||
{
|
{
|
||||||
return time(NULL) > occupiedTimeout && !Receiving(true) && !(pidHandles[ptAudio].pid || pidHandles[ptVideo].pid || pidHandles[ptDolby].pid);
|
return time(NULL) > occupiedTimeout && !Receiving(true) && !(pidHandles[ptAudio].pid || pidHandles[ptVideo].pid || pidHandles[ptDolby].pid);
|
||||||
}
|
}
|
||||||
@ -1488,6 +1488,7 @@ int cDevice::PlayTs(const uchar *Data, int Length, bool VideoOnly)
|
|||||||
int cDevice::Priority(void) const
|
int cDevice::Priority(void) const
|
||||||
{
|
{
|
||||||
int priority = IsPrimaryDevice() ? Setup.PrimaryLimit - 1 : DEFAULTPRIORITY;
|
int priority = IsPrimaryDevice() ? Setup.PrimaryLimit - 1 : DEFAULTPRIORITY;
|
||||||
|
cMutexLock MutexLock(&mutexReceiver);
|
||||||
for (int i = 0; i < MAXRECEIVERS; i++) {
|
for (int i = 0; i < MAXRECEIVERS; i++) {
|
||||||
if (receiver[i])
|
if (receiver[i])
|
||||||
priority = max(receiver[i]->priority, priority);
|
priority = max(receiver[i]->priority, priority);
|
||||||
@ -1502,6 +1503,7 @@ bool cDevice::Ready(void)
|
|||||||
|
|
||||||
bool cDevice::Receiving(bool CheckAny) const
|
bool cDevice::Receiving(bool CheckAny) const
|
||||||
{
|
{
|
||||||
|
cMutexLock MutexLock(&mutexReceiver);
|
||||||
for (int i = 0; i < MAXRECEIVERS; i++) {
|
for (int i = 0; i < MAXRECEIVERS; i++) {
|
||||||
if (receiver[i] && (CheckAny || receiver[i]->priority >= 0)) // cReceiver with priority < 0 doesn't count
|
if (receiver[i] && (CheckAny || receiver[i]->priority >= 0)) // cReceiver with priority < 0 doesn't count
|
||||||
return true;
|
return true;
|
||||||
|
16
device.h
16
device.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: device.h 2.28 2011/10/16 13:27:23 kls Exp $
|
* $Id: device.h 2.29 2011/10/16 14:10:33 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DEVICE_H
|
#ifndef __DEVICE_H
|
||||||
@ -275,12 +275,14 @@ public:
|
|||||||
///< This is not one of the channels in the global cChannels list, but rather
|
///< This is not one of the channels in the global cChannels list, but rather
|
||||||
///< a local copy. The result may be NULL if the device is not tuned to any
|
///< a local copy. The result may be NULL if the device is not tuned to any
|
||||||
///< transponder.
|
///< transponder.
|
||||||
virtual bool IsTunedToTransponder(const cChannel *Channel);
|
virtual bool IsTunedToTransponder(const cChannel *Channel) const;
|
||||||
///< Returns true if this device is currently tuned to the given Channel's
|
///< Returns true if this device is currently tuned to the given Channel's
|
||||||
///< transponder.
|
///< transponder.
|
||||||
virtual bool MaySwitchTransponder(void);
|
virtual bool MaySwitchTransponder(const cChannel *Channel) const;
|
||||||
///< Returns true if it is ok to switch the transponder on this device,
|
///< Returns true if it is ok to switch to the Channel's transponder on this
|
||||||
///< without disturbing any other activities.
|
///< device, without disturbing any other activities. If an occupied timeout
|
||||||
|
///< has been set for this device, and that timeout has not yet expired,
|
||||||
|
///< this function returns false,
|
||||||
bool SwitchChannel(const cChannel *Channel, bool LiveView);
|
bool SwitchChannel(const cChannel *Channel, bool LiveView);
|
||||||
///< Switches the device to the given Channel, initiating transfer mode
|
///< Switches the device to the given Channel, initiating transfer mode
|
||||||
///< if necessary.
|
///< if necessary.
|
||||||
@ -710,7 +712,7 @@ public:
|
|||||||
// Receiver facilities
|
// Receiver facilities
|
||||||
|
|
||||||
private:
|
private:
|
||||||
cMutex mutexReceiver;
|
mutable cMutex mutexReceiver;
|
||||||
cReceiver *receiver[MAXRECEIVERS];
|
cReceiver *receiver[MAXRECEIVERS];
|
||||||
public:
|
public:
|
||||||
int Priority(void) const;
|
int Priority(void) const;
|
||||||
@ -739,7 +741,7 @@ public:
|
|||||||
///< Detaches the given receiver from this device.
|
///< Detaches the given receiver from this device.
|
||||||
void DetachAll(int Pid);
|
void DetachAll(int Pid);
|
||||||
///< Detaches all receivers from this device for this pid.
|
///< Detaches all receivers from this device for this pid.
|
||||||
void DetachAllReceivers(void);
|
virtual void DetachAllReceivers(void);
|
||||||
///< Detaches all receivers from this device.
|
///< Detaches all receivers from this device.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
364
dvbdevice.c
364
dvbdevice.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.c 2.47 2011/09/17 12:53:46 kls Exp $
|
* $Id: dvbdevice.c 2.48 2011/12/03 15:24:27 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "dvbdevice.h"
|
#include "dvbdevice.h"
|
||||||
@ -259,8 +259,9 @@ bool cDvbTransponderParameters::Parse(const char *s)
|
|||||||
|
|
||||||
class cDvbTuner : public cThread {
|
class cDvbTuner : public cThread {
|
||||||
private:
|
private:
|
||||||
|
static cMutex bondMutex;
|
||||||
enum eTunerStatus { tsIdle, tsSet, tsTuned, tsLocked };
|
enum eTunerStatus { tsIdle, tsSet, tsTuned, tsLocked };
|
||||||
int device;
|
const cDvbDevice *device;
|
||||||
int fd_frontend;
|
int fd_frontend;
|
||||||
int adapter, frontend;
|
int adapter, frontend;
|
||||||
uint32_t subsystemId;
|
uint32_t subsystemId;
|
||||||
@ -275,24 +276,35 @@ private:
|
|||||||
cMutex mutex;
|
cMutex mutex;
|
||||||
cCondVar locked;
|
cCondVar locked;
|
||||||
cCondVar newSet;
|
cCondVar newSet;
|
||||||
|
cDvbTuner *bondedTuner;
|
||||||
|
bool bondedMaster;
|
||||||
|
bool bondedMasterFailed;
|
||||||
|
cString GetBondingParams(const cChannel *Channel = NULL) const;
|
||||||
void ClearEventQueue(void) const;
|
void ClearEventQueue(void) const;
|
||||||
bool GetFrontendStatus(fe_status_t &Status) const;
|
bool GetFrontendStatus(fe_status_t &Status) const;
|
||||||
void ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency) const;
|
void ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency);
|
||||||
|
void ResetToneAndVoltage(void);
|
||||||
bool SetFrontend(void);
|
bool SetFrontend(void);
|
||||||
virtual void Action(void);
|
virtual void Action(void);
|
||||||
public:
|
public:
|
||||||
cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType);
|
cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType);
|
||||||
virtual ~cDvbTuner();
|
virtual ~cDvbTuner();
|
||||||
|
bool Bond(cDvbTuner *Tuner);
|
||||||
|
void UnBond(void);
|
||||||
|
bool BondingOk(const cChannel *Channel, bool ConsiderOccupied = false) const;
|
||||||
|
cDvbTuner *GetBondedMaster(void);
|
||||||
const cChannel *GetTransponder(void) const { return &channel; }
|
const cChannel *GetTransponder(void) const { return &channel; }
|
||||||
uint32_t SubsystemId(void) const { return subsystemId; }
|
uint32_t SubsystemId(void) const { return subsystemId; }
|
||||||
bool IsTunedTo(const cChannel *Channel) const;
|
bool IsTunedTo(const cChannel *Channel) const;
|
||||||
void Set(const cChannel *Channel);
|
void SetChannel(const cChannel *Channel);
|
||||||
bool Locked(int TimeoutMs = 0);
|
bool Locked(int TimeoutMs = 0);
|
||||||
int GetSignalStrength(void) const;
|
int GetSignalStrength(void) const;
|
||||||
int GetSignalQuality(void) const;
|
int GetSignalQuality(void) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
cDvbTuner::cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType)
|
cMutex cDvbTuner::bondMutex;
|
||||||
|
|
||||||
|
cDvbTuner::cDvbTuner(const cDvbDevice *Device, int Fd_Frontend, int Adapter, int Frontend, fe_delivery_system FrontendType)
|
||||||
{
|
{
|
||||||
device = Device;
|
device = Device;
|
||||||
fd_frontend = Fd_Frontend;
|
fd_frontend = Fd_Frontend;
|
||||||
@ -306,8 +318,11 @@ cDvbTuner::cDvbTuner(int Device, int Fd_Frontend, int Adapter, int Frontend, fe_
|
|||||||
lastDiseqc = NULL;
|
lastDiseqc = NULL;
|
||||||
scr = NULL;
|
scr = NULL;
|
||||||
tunerStatus = tsIdle;
|
tunerStatus = tsIdle;
|
||||||
|
bondedTuner = NULL;
|
||||||
|
bondedMaster = false;
|
||||||
|
bondedMasterFailed = false;
|
||||||
if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2)
|
if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2)
|
||||||
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // must explicitly turn on LNB power
|
ResetToneAndVoltage(); // must explicitly turn on LNB power
|
||||||
SetDescription("tuner on frontend %d/%d", adapter, frontend);
|
SetDescription("tuner on frontend %d/%d", adapter, frontend);
|
||||||
Start();
|
Start();
|
||||||
}
|
}
|
||||||
@ -318,6 +333,7 @@ cDvbTuner::~cDvbTuner()
|
|||||||
newSet.Broadcast();
|
newSet.Broadcast();
|
||||||
locked.Broadcast();
|
locked.Broadcast();
|
||||||
Cancel(3);
|
Cancel(3);
|
||||||
|
UnBond();
|
||||||
/* looks like this irritates the SCR switch, so let's leave it out for now
|
/* looks like this irritates the SCR switch, so let's leave it out for now
|
||||||
if (lastDiseqc && lastDiseqc->IsScr()) {
|
if (lastDiseqc && lastDiseqc->IsScr()) {
|
||||||
unsigned int Frequency = 0;
|
unsigned int Frequency = 0;
|
||||||
@ -326,6 +342,109 @@ cDvbTuner::~cDvbTuner()
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cDvbTuner::Bond(cDvbTuner *Tuner)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (!bondedTuner) {
|
||||||
|
if ((frontendType == SYS_DVBS || frontendType == SYS_DVBS2) && (Tuner->frontendType == SYS_DVBS || Tuner->frontendType == SYS_DVBS2)) {
|
||||||
|
ResetToneAndVoltage();
|
||||||
|
bondedMaster = false; // makes sure we don't disturb an existing master
|
||||||
|
bondedTuner = Tuner->bondedTuner ? Tuner->bondedTuner : Tuner;
|
||||||
|
Tuner->bondedTuner = this;
|
||||||
|
dsyslog("tuner %d/%d bonded with tuner %d/%d", adapter, frontend, bondedTuner->adapter, bondedTuner->frontend);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: can't bond tuner %d/%d with tuner %d/%d (only DVB-S(2) tuners can be bonded)", adapter, frontend, Tuner->adapter, Tuner->frontend);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: tuner %d/%d already bonded with tuner %d/%d, can't bond with tuner %d/%d", adapter, frontend, bondedTuner->adapter, bondedTuner->frontend, Tuner->adapter, Tuner->frontend);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDvbTuner::UnBond(void)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (cDvbTuner *t = bondedTuner) {
|
||||||
|
dsyslog("tuner %d/%d unbonded from tuner %d/%d", adapter, frontend, bondedTuner->adapter, bondedTuner->frontend);
|
||||||
|
while (t->bondedTuner != this)
|
||||||
|
t = t->bondedTuner;
|
||||||
|
if (t == bondedTuner)
|
||||||
|
t->bondedTuner = NULL;
|
||||||
|
else
|
||||||
|
t->bondedTuner = bondedTuner;
|
||||||
|
bondedMaster = false; // another one will automatically become master whenever necessary
|
||||||
|
bondedTuner = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cString cDvbTuner::GetBondingParams(const cChannel *Channel) const
|
||||||
|
{
|
||||||
|
if (!Channel)
|
||||||
|
Channel = &channel;
|
||||||
|
cDvbTransponderParameters dtp(Channel->Parameters());
|
||||||
|
if (Setup.DiSEqC) {
|
||||||
|
if (const cDiseqc *diseqc = Diseqcs.Get(device->CardIndex() + 1, Channel->Source(), Channel->Frequency(), dtp.Polarization(), NULL))
|
||||||
|
return diseqc->Commands();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bool ToneOff = Channel->Frequency() < (unsigned int)Setup.LnbSLOF;
|
||||||
|
bool VoltOff = dtp.Polarization() == 'V' || dtp.Polarization() == 'R';
|
||||||
|
return cString::sprintf("%c %c", ToneOff ? 't' : 'T', VoltOff ? 'v' : 'V');
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cDvbTuner::BondingOk(const cChannel *Channel, bool ConsiderOccupied) const
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (cDvbTuner *t = bondedTuner) {
|
||||||
|
cString BondingParams = GetBondingParams(Channel);
|
||||||
|
do {
|
||||||
|
if (t->device->Receiving() || t->tunerStatus != tsIdle && (t->device == cDevice::ActualDevice() || ConsiderOccupied && t->device->Occupied())) {
|
||||||
|
if (strcmp(BondingParams, t->GetBondingParams()) != 0)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
t = t->bondedTuner;
|
||||||
|
} while (t != bondedTuner);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
cDvbTuner *cDvbTuner::GetBondedMaster(void)
|
||||||
|
{
|
||||||
|
if (!bondedTuner)
|
||||||
|
return this; // an unbonded tuner is always "master"
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (bondedMaster) {
|
||||||
|
if (!bondedMasterFailed)
|
||||||
|
return this;
|
||||||
|
else
|
||||||
|
bondedMaster = false;
|
||||||
|
}
|
||||||
|
// This tuner is bonded, but it's not the master, so let's see if there is a master at all:
|
||||||
|
if (cDvbTuner *t = bondedTuner) {
|
||||||
|
while (t != this) {
|
||||||
|
if (t->bondedMaster)
|
||||||
|
return t;
|
||||||
|
t = t->bondedTuner;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// None of the other bonded tuners is master, so make this one the master:
|
||||||
|
cDvbTuner *t = this;
|
||||||
|
if (bondedMasterFailed) {
|
||||||
|
// This one has failed, so switch to the next one:
|
||||||
|
t = bondedTuner;
|
||||||
|
t->bondedMasterFailed = false;
|
||||||
|
cMutexLock MutexLock(&t->mutex);
|
||||||
|
t->channel = channel;
|
||||||
|
t->tunerStatus = tsSet;
|
||||||
|
}
|
||||||
|
t->bondedMaster = true;
|
||||||
|
dsyslog("tuner %d/%d is now bonded master", t->adapter, t->frontend);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
||||||
{
|
{
|
||||||
if (tunerStatus == tsIdle)
|
if (tunerStatus == tsIdle)
|
||||||
@ -336,14 +455,34 @@ bool cDvbTuner::IsTunedTo(const cChannel *Channel) const
|
|||||||
return strcmp(channel.Parameters(), Channel->Parameters()) == 0;
|
return strcmp(channel.Parameters(), Channel->Parameters()) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDvbTuner::Set(const cChannel *Channel)
|
void cDvbTuner::SetChannel(const cChannel *Channel)
|
||||||
{
|
{
|
||||||
cMutexLock MutexLock(&mutex);
|
if (Channel) {
|
||||||
if (!IsTunedTo(Channel))
|
if (bondedTuner) {
|
||||||
tunerStatus = tsSet;
|
cMutexLock MutexLock(&bondMutex);
|
||||||
channel = *Channel;
|
cDvbTuner *BondedMaster = GetBondedMaster();
|
||||||
lastTimeoutReport = 0;
|
if (BondedMaster == this) {
|
||||||
newSet.Broadcast();
|
if (strcmp(GetBondingParams(Channel), GetBondingParams()) != 0) {
|
||||||
|
// switching to a completely different band, so set all others to idle:
|
||||||
|
for (cDvbTuner *t = bondedTuner; t && t != this; t = t->bondedTuner)
|
||||||
|
t->SetChannel(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (!BondedMaster->device->Receiving())
|
||||||
|
BondedMaster->SetChannel(Channel);
|
||||||
|
}
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
|
if (!IsTunedTo(Channel))
|
||||||
|
tunerStatus = tsSet;
|
||||||
|
channel = *Channel;
|
||||||
|
lastTimeoutReport = 0;
|
||||||
|
newSet.Broadcast();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
cMutexLock MutexLock(&mutex);
|
||||||
|
tunerStatus = tsIdle;
|
||||||
|
ResetToneAndVoltage();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbTuner::Locked(int TimeoutMs)
|
bool cDvbTuner::Locked(int TimeoutMs)
|
||||||
@ -493,7 +632,7 @@ static unsigned int FrequencyToHz(unsigned int f)
|
|||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency) const
|
void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency)
|
||||||
{
|
{
|
||||||
struct dvb_diseqc_master_cmd cmd;
|
struct dvb_diseqc_master_cmd cmd;
|
||||||
const char *CurrentAction = NULL;
|
const char *CurrentAction = NULL;
|
||||||
@ -514,7 +653,13 @@ void cDvbTuner::ExecuteDiseqc(const cDiseqc *Diseqc, unsigned int *Frequency) co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (scr)
|
if (scr)
|
||||||
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13)); // makes sure we don't block the bus!
|
ResetToneAndVoltage(); // makes sure we don't block the bus!
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDvbTuner::ResetToneAndVoltage(void)
|
||||||
|
{
|
||||||
|
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, SEC_VOLTAGE_13));
|
||||||
|
CHECK(ioctl(fd_frontend, FE_SET_TONE, SEC_TONE_OFF));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbTuner::SetFrontend(void)
|
bool cDvbTuner::SetFrontend(void)
|
||||||
@ -544,12 +689,16 @@ bool cDvbTuner::SetFrontend(void)
|
|||||||
if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2) {
|
if (frontendType == SYS_DVBS || frontendType == SYS_DVBS2) {
|
||||||
unsigned int frequency = channel.Frequency();
|
unsigned int frequency = channel.Frequency();
|
||||||
if (Setup.DiSEqC) {
|
if (Setup.DiSEqC) {
|
||||||
if (const cDiseqc *diseqc = Diseqcs.Get(device, channel.Source(), frequency, dtp.Polarization(), &scr)) {
|
if (const cDiseqc *diseqc = Diseqcs.Get(device->CardIndex() + 1, channel.Source(), frequency, dtp.Polarization(), &scr)) {
|
||||||
frequency -= diseqc->Lof();
|
frequency -= diseqc->Lof();
|
||||||
if (diseqc != lastDiseqc || diseqc->IsScr()) {
|
if (diseqc != lastDiseqc || diseqc->IsScr()) {
|
||||||
ExecuteDiseqc(diseqc, &frequency);
|
if (GetBondedMaster() == this) {
|
||||||
if (frequency == 0)
|
ExecuteDiseqc(diseqc, &frequency);
|
||||||
return false;
|
if (frequency == 0)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ResetToneAndVoltage();
|
||||||
lastDiseqc = diseqc;
|
lastDiseqc = diseqc;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -568,7 +717,11 @@ bool cDvbTuner::SetFrontend(void)
|
|||||||
frequency -= Setup.LnbFrequHi;
|
frequency -= Setup.LnbFrequHi;
|
||||||
tone = SEC_TONE_ON;
|
tone = SEC_TONE_ON;
|
||||||
}
|
}
|
||||||
int volt = (dtp.Polarization() == 'v' || dtp.Polarization() == 'V' || dtp.Polarization() == 'r' || dtp.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
|
int volt = (dtp.Polarization() == 'V' || dtp.Polarization() == 'R') ? SEC_VOLTAGE_13 : SEC_VOLTAGE_18;
|
||||||
|
if (GetBondedMaster() != this) {
|
||||||
|
tone = SEC_TONE_OFF;
|
||||||
|
volt = SEC_VOLTAGE_13;
|
||||||
|
}
|
||||||
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
|
CHECK(ioctl(fd_frontend, FE_SET_VOLTAGE, volt));
|
||||||
CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
|
CHECK(ioctl(fd_frontend, FE_SET_TONE, tone));
|
||||||
}
|
}
|
||||||
@ -675,6 +828,9 @@ void cDvbTuner::Action(void)
|
|||||||
isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder());
|
isyslog("frontend %d/%d timed out while tuning to channel %d, tp %d", adapter, frontend, channel.Number(), channel.Transponder());
|
||||||
lastTimeoutReport = time(NULL);
|
lastTimeoutReport = time(NULL);
|
||||||
}
|
}
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (bondedTuner && bondedMaster)
|
||||||
|
bondedMasterFailed = true; // give an other tuner a chance in case the sat cable was disconnected
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case tsLocked:
|
case tsLocked:
|
||||||
@ -770,6 +926,7 @@ cOsdItem *cDvbSourceParam::GetOsdItem(void)
|
|||||||
// --- cDvbDevice ------------------------------------------------------------
|
// --- cDvbDevice ------------------------------------------------------------
|
||||||
|
|
||||||
int cDvbDevice::setTransferModeForDolbyDigital = 1;
|
int cDvbDevice::setTransferModeForDolbyDigital = 1;
|
||||||
|
cMutex cDvbDevice::bondMutex;
|
||||||
|
|
||||||
const char *DeliverySystems[] = {
|
const char *DeliverySystems[] = {
|
||||||
"UNDEFINED",
|
"UNDEFINED",
|
||||||
@ -799,6 +956,8 @@ cDvbDevice::cDvbDevice(int Adapter, int Frontend)
|
|||||||
dvbTuner = NULL;
|
dvbTuner = NULL;
|
||||||
frontendType = SYS_UNDEFINED;
|
frontendType = SYS_UNDEFINED;
|
||||||
numProvidedSystems = 0;
|
numProvidedSystems = 0;
|
||||||
|
bondedDevice = NULL;
|
||||||
|
needsDetachBondedReceivers = false;
|
||||||
|
|
||||||
// Devices that are present on all card types:
|
// Devices that are present on all card types:
|
||||||
|
|
||||||
@ -848,7 +1007,7 @@ cDvbDevice::cDvbDevice(int Adapter, int Frontend)
|
|||||||
else
|
else
|
||||||
p = (char *)"unknown modulations";
|
p = (char *)"unknown modulations";
|
||||||
isyslog("frontend %d/%d provides %s with %s (\"%s\")", adapter, frontend, DeliverySystems[frontendType], p, frontendInfo.name);
|
isyslog("frontend %d/%d provides %s with %s (\"%s\")", adapter, frontend, DeliverySystems[frontendType], p, frontendInfo.name);
|
||||||
dvbTuner = new cDvbTuner(CardIndex() + 1, fd_frontend, adapter, frontend, frontendType);
|
dvbTuner = new cDvbTuner(this, fd_frontend, adapter, frontend, frontendType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -862,6 +1021,7 @@ cDvbDevice::~cDvbDevice()
|
|||||||
StopSectionHandler();
|
StopSectionHandler();
|
||||||
delete dvbTuner;
|
delete dvbTuner;
|
||||||
delete ciAdapter;
|
delete ciAdapter;
|
||||||
|
UnBond();
|
||||||
// We're not explicitly closing any device files here, since this sometimes
|
// We're not explicitly closing any device files here, since this sometimes
|
||||||
// caused segfaults. Besides, the program is about to terminate anyway...
|
// caused segfaults. Besides, the program is about to terminate anyway...
|
||||||
}
|
}
|
||||||
@ -953,6 +1113,104 @@ bool cDvbDevice::Ready(void)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cDvbDevice::BondDevices(const char *Bondings)
|
||||||
|
{
|
||||||
|
UnBondDevices();
|
||||||
|
if (Bondings) {
|
||||||
|
cSatCableNumbers SatCableNumbers(MAXDEVICES, Bondings);
|
||||||
|
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||||
|
int d = SatCableNumbers.FirstDeviceIndex(i);
|
||||||
|
if (d >= 0) {
|
||||||
|
int ErrorDevice = 0;
|
||||||
|
if (cDevice *Device1 = cDevice::GetDevice(i)) {
|
||||||
|
if (cDevice *Device2 = cDevice::GetDevice(d)) {
|
||||||
|
if (cDvbDevice *DvbDevice1 = dynamic_cast<cDvbDevice *>(Device1)) {
|
||||||
|
if (cDvbDevice *DvbDevice2 = dynamic_cast<cDvbDevice *>(Device2)) {
|
||||||
|
if (!DvbDevice2->Bond(DvbDevice1))
|
||||||
|
return false; // Bond() has already logged the error
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ErrorDevice = d + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ErrorDevice = i + 1;
|
||||||
|
if (ErrorDevice) {
|
||||||
|
esyslog("ERROR: device '%d' in device bondings '%s' is not a cDvbDevice", ErrorDevice, Bondings);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ErrorDevice = d + 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ErrorDevice = i + 1;
|
||||||
|
if (ErrorDevice) {
|
||||||
|
esyslog("ERROR: unknown device '%d' in device bondings '%s'", ErrorDevice, Bondings);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDvbDevice::UnBondDevices(void)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||||
|
if (cDvbDevice *d = dynamic_cast<cDvbDevice *>(cDevice::GetDevice(i)))
|
||||||
|
d->UnBond();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cDvbDevice::Bond(cDvbDevice *Device)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (!bondedDevice) {
|
||||||
|
if (Device != this) {
|
||||||
|
if ((frontendType == SYS_DVBS || frontendType == SYS_DVBS2) && (Device->frontendType == SYS_DVBS || Device->frontendType == SYS_DVBS2)) {
|
||||||
|
if (dvbTuner && Device->dvbTuner && dvbTuner->Bond(Device->dvbTuner)) {
|
||||||
|
bondedDevice = Device->bondedDevice ? Device->bondedDevice : Device;
|
||||||
|
Device->bondedDevice = this;
|
||||||
|
dsyslog("device %d bonded with device %d", CardIndex() + 1, bondedDevice->CardIndex() + 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: can't bond device %d with device %d (only DVB-S(2) devices can be bonded)", CardIndex() + 1, Device->CardIndex() + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: can't bond device %d with itself", CardIndex() + 1);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
esyslog("ERROR: device %d already bonded with device %d, can't bond with device %d", CardIndex() + 1, bondedDevice->CardIndex() + 1, Device->CardIndex() + 1);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void cDvbDevice::UnBond(void)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (cDvbDevice *d = bondedDevice) {
|
||||||
|
if (dvbTuner)
|
||||||
|
dvbTuner->UnBond();
|
||||||
|
dsyslog("device %d unbonded from device %d", CardIndex() + 1, bondedDevice->CardIndex() + 1);
|
||||||
|
while (d->bondedDevice != this)
|
||||||
|
d = d->bondedDevice;
|
||||||
|
if (d == bondedDevice)
|
||||||
|
d->bondedDevice = NULL;
|
||||||
|
else
|
||||||
|
d->bondedDevice = bondedDevice;
|
||||||
|
bondedDevice = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cDvbDevice::BondingOk(const cChannel *Channel, bool ConsiderOccupied) const
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
if (bondedDevice)
|
||||||
|
return dvbTuner && dvbTuner->BondingOk(Channel, ConsiderOccupied);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool cDvbDevice::HasCi(void)
|
bool cDvbDevice::HasCi(void)
|
||||||
{
|
{
|
||||||
return ciAdapter;
|
return ciAdapter;
|
||||||
@ -1055,7 +1313,7 @@ bool cDvbDevice::ProvidesTransponder(const cChannel *Channel) const
|
|||||||
dtp.Modulation() == PSK_8 && !(frontendInfo.caps & FE_CAN_TURBO_FEC) && dtp.System() == SYS_DVBS) // "turbo fec" is a non standard FEC used by North American broadcasters - this is a best guess to determine this condition
|
dtp.Modulation() == PSK_8 && !(frontendInfo.caps & FE_CAN_TURBO_FEC) && dtp.System() == SYS_DVBS) // "turbo fec" is a non standard FEC used by North American broadcasters - this is a best guess to determine this condition
|
||||||
return false; // requires modulation system which frontend doesn't provide
|
return false; // requires modulation system which frontend doesn't provide
|
||||||
if (!cSource::IsSat(Channel->Source()) ||
|
if (!cSource::IsSat(Channel->Source()) ||
|
||||||
!Setup.DiSEqC || Diseqcs.Get(CardIndex() + 1, Channel->Source(), Channel->Frequency(), dtp.Polarization(), NULL))
|
(!Setup.DiSEqC || Diseqcs.Get(CardIndex() + 1, Channel->Source(), Channel->Frequency(), dtp.Polarization(), NULL)))
|
||||||
return DeviceHooksProvidesTransponder(Channel);
|
return DeviceHooksProvidesTransponder(Channel);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1065,28 +1323,44 @@ bool cDvbDevice::ProvidesChannel(const cChannel *Channel, int Priority, bool *Ne
|
|||||||
bool result = false;
|
bool result = false;
|
||||||
bool hasPriority = Priority < 0 || Priority > this->Priority();
|
bool hasPriority = Priority < 0 || Priority > this->Priority();
|
||||||
bool needsDetachReceivers = false;
|
bool needsDetachReceivers = false;
|
||||||
|
needsDetachBondedReceivers = false;
|
||||||
|
|
||||||
if (dvbTuner && ProvidesTransponder(Channel)) {
|
if (dvbTuner && ProvidesTransponder(Channel)) {
|
||||||
result = hasPriority;
|
result = hasPriority;
|
||||||
if (Priority >= 0 && Receiving(true)) {
|
if (Priority >= 0) {
|
||||||
if (dvbTuner->IsTunedTo(Channel)) {
|
if (Receiving(true)) {
|
||||||
if (Channel->Vpid() && !HasPid(Channel->Vpid()) || Channel->Apid(0) && !HasPid(Channel->Apid(0))) {
|
if (dvbTuner->IsTunedTo(Channel)) {
|
||||||
if (CamSlot() && Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
if (Channel->Vpid() && !HasPid(Channel->Vpid()) || Channel->Apid(0) && !HasPid(Channel->Apid(0))) {
|
||||||
if (CamSlot()->CanDecrypt(Channel))
|
if (CamSlot() && Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
||||||
|
if (CamSlot()->CanDecrypt(Channel))
|
||||||
|
result = true;
|
||||||
|
else
|
||||||
|
needsDetachReceivers = true;
|
||||||
|
}
|
||||||
|
else if (!IsPrimaryDevice())
|
||||||
result = true;
|
result = true;
|
||||||
else
|
else
|
||||||
needsDetachReceivers = true;
|
result = Priority >= Setup.PrimaryLimit;
|
||||||
}
|
}
|
||||||
else if (!IsPrimaryDevice())
|
|
||||||
result = true;
|
|
||||||
else
|
else
|
||||||
result = Priority >= Setup.PrimaryLimit;
|
result = !IsPrimaryDevice() || Priority >= Setup.PrimaryLimit;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
result = !IsPrimaryDevice() || Priority >= Setup.PrimaryLimit;
|
needsDetachReceivers = true;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
if (!BondingOk(Channel)) {
|
||||||
|
// This device is bonded, so we need to check the priorities of the others:
|
||||||
|
for (cDvbDevice *d = bondedDevice; d && d != this; d = d->bondedDevice) {
|
||||||
|
if (d->Priority() >= Priority) {
|
||||||
|
result = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
needsDetachBondedReceivers = true;
|
||||||
|
needsDetachReceivers = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
needsDetachReceivers = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (NeedsDetachReceivers)
|
if (NeedsDetachReceivers)
|
||||||
@ -1119,15 +1393,20 @@ const cChannel *cDvbDevice::GetCurrentlyTunedTransponder(void) const
|
|||||||
return dvbTuner ? dvbTuner->GetTransponder() : NULL;
|
return dvbTuner ? dvbTuner->GetTransponder() : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cDvbDevice::IsTunedToTransponder(const cChannel *Channel)
|
bool cDvbDevice::IsTunedToTransponder(const cChannel *Channel) const
|
||||||
{
|
{
|
||||||
return dvbTuner ? dvbTuner->IsTunedTo(Channel) : false;
|
return dvbTuner ? dvbTuner->IsTunedTo(Channel) : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool cDvbDevice::MaySwitchTransponder(const cChannel *Channel) const
|
||||||
|
{
|
||||||
|
return BondingOk(Channel, true) && cDevice::MaySwitchTransponder(Channel);
|
||||||
|
}
|
||||||
|
|
||||||
bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
|
||||||
{
|
{
|
||||||
if (dvbTuner)
|
if (dvbTuner)
|
||||||
dvbTuner->Set(Channel);
|
dvbTuner->SetChannel(Channel);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1169,6 +1448,17 @@ bool cDvbDevice::GetTSPacket(uchar *&Data)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cDvbDevice::DetachAllReceivers(void)
|
||||||
|
{
|
||||||
|
cMutexLock MutexLock(&bondMutex);
|
||||||
|
cDvbDevice *d = this;
|
||||||
|
do {
|
||||||
|
d->cDevice::DetachAllReceivers();
|
||||||
|
d = d->bondedDevice;
|
||||||
|
} while (d && d != this && needsDetachBondedReceivers);
|
||||||
|
needsDetachBondedReceivers = false;
|
||||||
|
}
|
||||||
|
|
||||||
// --- cDvbDeviceProbe -------------------------------------------------------
|
// --- cDvbDeviceProbe -------------------------------------------------------
|
||||||
|
|
||||||
cList<cDvbDeviceProbe> DvbDeviceProbes;
|
cList<cDvbDeviceProbe> DvbDeviceProbes;
|
||||||
|
36
dvbdevice.h
36
dvbdevice.h
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: dvbdevice.h 2.16 2011/08/26 12:55:45 kls Exp $
|
* $Id: dvbdevice.h 2.17 2011/11/27 11:56:57 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __DVBDEVICE_H
|
#ifndef __DVBDEVICE_H
|
||||||
@ -122,10 +122,40 @@ private:
|
|||||||
int numProvidedSystems;
|
int numProvidedSystems;
|
||||||
fe_delivery_system frontendType;
|
fe_delivery_system frontendType;
|
||||||
int fd_dvr, fd_ca;
|
int fd_dvr, fd_ca;
|
||||||
|
static cMutex bondMutex;
|
||||||
|
cDvbDevice *bondedDevice;
|
||||||
|
mutable bool needsDetachBondedReceivers;
|
||||||
public:
|
public:
|
||||||
cDvbDevice(int Adapter, int Frontend);
|
cDvbDevice(int Adapter, int Frontend);
|
||||||
virtual ~cDvbDevice();
|
virtual ~cDvbDevice();
|
||||||
virtual bool Ready(void);
|
virtual bool Ready(void);
|
||||||
|
static bool BondDevices(const char *Bondings);
|
||||||
|
///< Bonds the devices as defined in the given Bondings string.
|
||||||
|
///< A bonding is a sequence of device numbers (starting at 1),
|
||||||
|
///< separated by '+' characters. Several bondings are separated by
|
||||||
|
///< commas, as in "1+2,3+4+5".
|
||||||
|
///< Returns false if an error occurred.
|
||||||
|
static void UnBondDevices(void);
|
||||||
|
///< Unbonds all devices.
|
||||||
|
bool Bond(cDvbDevice *Device);
|
||||||
|
///< Bonds this device with the given Device, making both of them use
|
||||||
|
///< the same satellite cable and LNB. Only DVB-S(2) devices can be
|
||||||
|
///< bonded. When this function is called, the calling device must
|
||||||
|
///< not be bonded to any other device. The given Device, however,
|
||||||
|
///< may already be bonded to an other device. That way several devices
|
||||||
|
///< can be bonded together.
|
||||||
|
///< Returns true if the bonding was successful.
|
||||||
|
void UnBond(void);
|
||||||
|
///< Removes this device from any bonding it might have with other
|
||||||
|
///< devices. If this device is not bonded with any other device,
|
||||||
|
///< nothing happens.
|
||||||
|
bool BondingOk(const cChannel *Channel, bool ConsiderOccupied = false) const;
|
||||||
|
///< Returns true if this device is either not bonded to any other
|
||||||
|
///< device, or the given Channel is on the same satellite, polarization
|
||||||
|
///< and band as those the bonded devices are tuned to (if any).
|
||||||
|
///< If ConsiderOccupied is true, any bonded devices that are currently
|
||||||
|
///< occupied but not otherwise receiving will cause this function to
|
||||||
|
///< return false.
|
||||||
|
|
||||||
// Common Interface facilities:
|
// Common Interface facilities:
|
||||||
|
|
||||||
@ -145,7 +175,8 @@ public:
|
|||||||
virtual int SignalStrength(void) const;
|
virtual int SignalStrength(void) const;
|
||||||
virtual int SignalQuality(void) const;
|
virtual int SignalQuality(void) const;
|
||||||
virtual const cChannel *GetCurrentlyTunedTransponder(void) const;
|
virtual const cChannel *GetCurrentlyTunedTransponder(void) const;
|
||||||
virtual bool IsTunedToTransponder(const cChannel *Channel);
|
virtual bool IsTunedToTransponder(const cChannel *Channel) const;
|
||||||
|
virtual bool MaySwitchTransponder(const cChannel *Channel) const;
|
||||||
protected:
|
protected:
|
||||||
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
virtual bool SetChannelDevice(const cChannel *Channel, bool LiveView);
|
||||||
public:
|
public:
|
||||||
@ -187,6 +218,7 @@ protected:
|
|||||||
virtual bool OpenDvr(void);
|
virtual bool OpenDvr(void);
|
||||||
virtual void CloseDvr(void);
|
virtual void CloseDvr(void);
|
||||||
virtual bool GetTSPacket(uchar *&Data);
|
virtual bool GetTSPacket(uchar *&Data);
|
||||||
|
virtual void DetachAllReceivers(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
// A plugin that implements a DVB device derived from cDvbDevice needs to create
|
// A plugin that implements a DVB device derived from cDvbDevice needs to create
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: eitscan.c 2.4 2011/08/26 13:10:00 kls Exp $
|
* $Id: eitscan.c 2.5 2011/10/16 14:10:00 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eitscan.h"
|
#include "eitscan.h"
|
||||||
@ -150,7 +150,7 @@ void cEITScanner::Process(void)
|
|||||||
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
if (!Channel->Ca() || Channel->Ca() == Device->DeviceNumber() + 1 || Channel->Ca() >= CA_ENCRYPTED_MIN) {
|
||||||
if (Device->ProvidesTransponder(Channel)) {
|
if (Device->ProvidesTransponder(Channel)) {
|
||||||
if (!Device->Receiving()) {
|
if (!Device->Receiving()) {
|
||||||
bool MaySwitchTransponder = Device->MaySwitchTransponder();
|
bool MaySwitchTransponder = Device->MaySwitchTransponder(Channel);
|
||||||
if (MaySwitchTransponder || Device->ProvidesTransponderExclusively(Channel) && now - lastActivity > Setup.EPGScanTimeout * 3600) {
|
if (MaySwitchTransponder || Device->ProvidesTransponderExclusively(Channel) && now - lastActivity > Setup.EPGScanTimeout * 3600) {
|
||||||
if (!MaySwitchTransponder) {
|
if (!MaySwitchTransponder) {
|
||||||
if (Device == cDevice::ActualDevice() && !currentChannel) {
|
if (Device == cDevice::ActualDevice() && !currentChannel) {
|
||||||
|
25
menu.c
25
menu.c
@ -4,7 +4,7 @@
|
|||||||
* See the main source file 'vdr.c' for copyright information and
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* how to reach the author.
|
||||||
*
|
*
|
||||||
* $Id: menu.c 2.32 2011/08/27 11:05:33 kls Exp $
|
* $Id: menu.c 2.33 2011/12/03 15:11:42 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
@ -2885,6 +2885,7 @@ eOSState cMenuSetupDVB::ProcessKey(eKeys Key)
|
|||||||
|
|
||||||
class cMenuSetupLNB : public cMenuSetupBase {
|
class cMenuSetupLNB : public cMenuSetupBase {
|
||||||
private:
|
private:
|
||||||
|
cSatCableNumbers satCableNumbers;
|
||||||
void Setup(void);
|
void Setup(void);
|
||||||
public:
|
public:
|
||||||
cMenuSetupLNB(void);
|
cMenuSetupLNB(void);
|
||||||
@ -2892,7 +2893,9 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
cMenuSetupLNB::cMenuSetupLNB(void)
|
cMenuSetupLNB::cMenuSetupLNB(void)
|
||||||
|
:satCableNumbers(MAXDEVICES)
|
||||||
{
|
{
|
||||||
|
satCableNumbers.FromString(data.DeviceBondings);
|
||||||
SetSection(tr("LNB"));
|
SetSection(tr("LNB"));
|
||||||
Setup();
|
Setup();
|
||||||
}
|
}
|
||||||
@ -2910,6 +2913,18 @@ void cMenuSetupLNB::Setup(void)
|
|||||||
Add(new cMenuEditIntItem( tr("Setup.LNB$High LNB frequency (MHz)"), &data.LnbFrequHi));
|
Add(new cMenuEditIntItem( tr("Setup.LNB$High LNB frequency (MHz)"), &data.LnbFrequHi));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int NumSatDevices = 0;
|
||||||
|
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||||
|
if (cDevice::GetDevice(i)->ProvidesSource(cSource::stSat))
|
||||||
|
NumSatDevices++;
|
||||||
|
}
|
||||||
|
if (NumSatDevices > 1) {
|
||||||
|
for (int i = 0; i < cDevice::NumDevices(); i++) {
|
||||||
|
if (cDevice::GetDevice(i)->ProvidesSource(cSource::stSat))
|
||||||
|
Add(new cMenuEditIntItem(cString::sprintf(tr("Setup.LNB$Device %d connected to sat cable"), i + 1), &satCableNumbers.Array()[i], 0, NumSatDevices, tr("Setup.LNB$own")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
SetCurrent(Get(current));
|
SetCurrent(Get(current));
|
||||||
Display();
|
Display();
|
||||||
}
|
}
|
||||||
@ -2917,10 +2932,18 @@ void cMenuSetupLNB::Setup(void)
|
|||||||
eOSState cMenuSetupLNB::ProcessKey(eKeys Key)
|
eOSState cMenuSetupLNB::ProcessKey(eKeys Key)
|
||||||
{
|
{
|
||||||
int oldDiSEqC = data.DiSEqC;
|
int oldDiSEqC = data.DiSEqC;
|
||||||
|
bool DeviceBondingsChanged = false;
|
||||||
|
if (Key == kOk) {
|
||||||
|
cString NewDeviceBondings = satCableNumbers.ToString();
|
||||||
|
DeviceBondingsChanged = strcmp(data.DeviceBondings, NewDeviceBondings) != 0;
|
||||||
|
data.DeviceBondings = NewDeviceBondings;
|
||||||
|
}
|
||||||
eOSState state = cMenuSetupBase::ProcessKey(Key);
|
eOSState state = cMenuSetupBase::ProcessKey(Key);
|
||||||
|
|
||||||
if (Key != kNone && data.DiSEqC != oldDiSEqC)
|
if (Key != kNone && data.DiSEqC != oldDiSEqC)
|
||||||
Setup();
|
Setup();
|
||||||
|
else if (DeviceBondingsChanged)
|
||||||
|
cDvbDevice::BondDevices(data.DeviceBondings);
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
9
po/ar.po
9
po/ar.po
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.0\n"
|
"Project-Id-Version: VDR 1.7.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
"PO-Revision-Date: 2008-10-16 11:16-0400\n"
|
||||||
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
"Last-Translator: Osama Alrawab <alrawab@hotmail.com>\n"
|
||||||
"Language-Team: Arabic <ar@li.org>\n"
|
"Language-Team: Arabic <ar@li.org>\n"
|
||||||
@ -983,6 +983,13 @@ msgstr "التردد المنخفض للاقط م هرتز"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "التردد المرتفع للاقط م هرتز"
|
msgstr "التردد المرتفع للاقط م هرتز"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "اعادة تشغيل الكامة"
|
msgstr "اعادة تشغيل الكامة"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
"Language-Team: Catalan <vdr@linuxtv.org>\n"
|
||||||
@ -965,6 +965,13 @@ msgstr "Freq
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Freqüència LNB alta (MHz)"
|
msgstr "Freqüència LNB alta (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Reiniciar CAM"
|
msgstr "Reiniciar CAM"
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.14\n"
|
"Project-Id-Version: VDR 1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
"PO-Revision-Date: 2010-05-06 11:00+0200\n"
|
||||||
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
"Last-Translator: Radek Šťastný <dedkus@gmail.com>\n"
|
||||||
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
"Language-Team: Czech <vdr@linuxtv.org>\n"
|
||||||
@ -964,6 +964,13 @@ msgstr "Dolní frekvence LNB (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Horní frekvence LNB (MHz)"
|
msgstr "Horní frekvence LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Reset CAMu"
|
msgstr "Reset CAMu"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
"Last-Translator: Mogens Elneff <mogens@elneff.dk>\n"
|
||||||
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
"Language-Team: Danish <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "Nedre LNB frekvens (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Øvre LNB frekvens (MHz)"
|
msgstr "Øvre LNB frekvens (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM nulstil"
|
msgstr "CAM nulstil"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
"PO-Revision-Date: 2010-01-16 16:46+0100\n"
|
||||||
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
"Last-Translator: Klaus Schmidinger <kls@tvdr.de>\n"
|
||||||
"Language-Team: German <vdr@linuxtv.org>\n"
|
"Language-Team: German <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "Untere LNB-Frequenz (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Obere LNB-Frequenz (MHz)"
|
msgstr "Obere LNB-Frequenz (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr "Device %d angeschlossen an Sat-Kabel"
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr "eigenes"
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM zurückgesetzt"
|
msgstr "CAM zurückgesetzt"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
"Last-Translator: Dimitrios Dimitrakos <mail@dimitrios.de>\n"
|
||||||
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
"Language-Team: Greek <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "¢íù LNB-Óõ÷íüôçôá (MHz)"
|
msgstr "¢íù LNB-Óõ÷íüôçôá (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
"PO-Revision-Date: 2008-03-02 19:02+0100\n"
|
||||||
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
"Last-Translator: Luca Olivetti <luca@ventoso.org>\n"
|
||||||
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
"Language-Team: Spanish <vdr@linuxtv.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "Frecuencia inferior del LNB (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Frecuencia superior del LNB (MHz)"
|
msgstr "Frecuencia superior del LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Reset CAM"
|
msgstr "Reset CAM"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
"Last-Translator: Arthur Konovalov <artlov@gmail.com>\n"
|
||||||
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
"Language-Team: Estonian <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "LO LNB sagedus (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "HI LNB sagedus (MHz)"
|
msgstr "HI LNB sagedus (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM taaskäivitamine"
|
msgstr "CAM taaskäivitamine"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
"PO-Revision-Date: 2007-08-15 15:52+0200\n"
|
||||||
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
"Last-Translator: Rolf Ahrenberg <rahrenbe@cc.hut.fi>\n"
|
||||||
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
"Language-Team: Finnish <vdr@linuxtv.org>\n"
|
||||||
@ -965,6 +965,13 @@ msgstr "LNB-alataajuus (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "LNB-ylätaajuus (MHz)"
|
msgstr "LNB-ylätaajuus (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM nollaus"
|
msgstr "CAM nollaus"
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
"PO-Revision-Date: 2008-02-27 18:14+0100\n"
|
||||||
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
"Last-Translator: Jean-Claude Repetto <jc@repetto.org>\n"
|
||||||
"Language-Team: French <vdr@linuxtv.org>\n"
|
"Language-Team: French <vdr@linuxtv.org>\n"
|
||||||
@ -968,6 +968,13 @@ msgstr "Fr
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Fréquence haute LNB (MHz)"
|
msgstr "Fréquence haute LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM remis à zéro"
|
msgstr "CAM remis à zéro"
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
"PO-Revision-Date: 2008-03-17 19:00+0100\n"
|
||||||
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
"Last-Translator: Adrian Caval <anrxc@sysphere.org>\n"
|
||||||
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
"Language-Team: Croatian <vdr@linuxtv.org>\n"
|
||||||
@ -964,6 +964,13 @@ msgstr "Donja LNB frekv. (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Gornja LNB frekv. (MHz)"
|
msgstr "Gornja LNB frekv. (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Ponovno pokreni CAM"
|
msgstr "Ponovno pokreni CAM"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2007-12-01 21:42+0200\n"
|
"PO-Revision-Date: 2007-12-01 21:42+0200\n"
|
||||||
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
"Last-Translator: István Füley <ifuley@tigercomp.ro>\n"
|
||||||
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
"Language-Team: Hungarian <vdr@linuxtv.org>\n"
|
||||||
@ -965,6 +965,13 @@ msgstr "Als
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Felsõ LNB-frekvencia (MHZ)"
|
msgstr "Felsõ LNB-frekvencia (MHZ)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM újraindítás"
|
msgstr "CAM újraindítás"
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-06-13 00:30+0100\n"
|
"PO-Revision-Date: 2010-06-13 00:30+0100\n"
|
||||||
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
|
||||||
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
"Language-Team: Italian <vdr@linuxtv.org>\n"
|
||||||
@ -969,6 +969,13 @@ msgstr "Freq LO LNB (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Freq HI LNB (MHz)"
|
msgstr "Freq HI LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Reimposta la CAM"
|
msgstr "Reimposta la CAM"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
"PO-Revision-Date: 2010-10-30 11:55+0200\n"
|
||||||
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
"Last-Translator: Valdemaras Pipiras <varas@ambernet.lt>\n"
|
||||||
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
"Language-Team: Lithuanian <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "Žemasis LNB dažnis (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Aukštasis LNB dažnis (MHz)"
|
msgstr "Aukštasis LNB dažnis (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Dekodavimo modulis (CAM) perkrautas"
|
msgstr "Dekodavimo modulis (CAM) perkrautas"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR-1.7.14\n"
|
"Project-Id-Version: VDR-1.7.14\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
"PO-Revision-Date: 2010-03-11 00:54+0100\n"
|
||||||
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
"Last-Translator: Dimitar Petrovski <dimeptr@gmail.com>\n"
|
||||||
"Language-Team: Macedonian <en@li.org>\n"
|
"Language-Team: Macedonian <en@li.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "Долна LNB фрекфенција (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Форна LNB фрекфенција (MHz)"
|
msgstr "Форна LNB фрекфенција (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Рестартирај CAM"
|
msgstr "Рестартирај CAM"
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
"PO-Revision-Date: 2008-02-26 17:20+0100\n"
|
||||||
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
"Last-Translator: Johan Schuring <johan.schuring@vetteblei.nl>\n"
|
||||||
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
"Language-Team: Dutch <vdr@linuxtv.org>\n"
|
||||||
@ -966,6 +966,13 @@ msgstr "Laagste LNB frequentie (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Hoogste LNB frequentie (MHz)"
|
msgstr "Hoogste LNB frequentie (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM herstarten"
|
msgstr "CAM herstarten"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
"PO-Revision-Date: 2007-08-12 14:17+0200\n"
|
||||||
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
"Last-Translator: Truls Slevigen <truls@slevigen.no>\n"
|
||||||
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
"Language-Team: Norwegian Nynorsk <vdr@linuxtv.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "LO-frekvens i lavb
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "LO-frekvens i høybåndet (MHz)"
|
msgstr "LO-frekvens i høybåndet (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
"PO-Revision-Date: 2008-03-09 12:59+0100\n"
|
||||||
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
"Last-Translator: Michael Rakowski <mrak@gmx.de>\n"
|
||||||
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
"Language-Team: Polish <vdr@linuxtv.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "Dolna cz
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Górna czêstotliwo¶æ LNB (MHz)"
|
msgstr "Górna czêstotliwo¶æ LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM zresetowany"
|
msgstr "CAM zresetowany"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.15\n"
|
"Project-Id-Version: VDR 1.7.15\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
"PO-Revision-Date: 2010-03-28 22:49+0100\n"
|
||||||
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
"Last-Translator: Cris Silva <hudokkow@gmail.com>\n"
|
||||||
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
"Language-Team: Portuguese <vdr@linuxtv.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "Frequ
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Frequência alta do LNB (MHz)"
|
msgstr "Frequência alta do LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Reiniciar CAM"
|
msgstr "Reiniciar CAM"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.12\n"
|
"Project-Id-Version: VDR 1.7.12\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2011-03-10 23:52+0100\n"
|
"PO-Revision-Date: 2011-03-10 23:52+0100\n"
|
||||||
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
"Last-Translator: Lucian Muresan <lucianm@users.sourceforge.net>\n"
|
||||||
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
"Language-Team: Romanian <vdr@linuxtv.org>\n"
|
||||||
@ -965,6 +965,13 @@ msgstr "Frecvn
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Frecvnþã LNB superioarã (MHz)"
|
msgstr "Frecvnþã LNB superioarã (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Resetare CAM"
|
msgstr "Resetare CAM"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
"PO-Revision-Date: 2008-12-15 14:37+0100\n"
|
||||||
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
"Last-Translator: Oleg Roitburd <oleg@roitburd.de>\n"
|
||||||
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
"Language-Team: Russian <vdr@linuxtv.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "²ÕàåÝïï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)"
|
msgstr "²ÕàåÝïï çÐáâÞâÐ ÚÞÝÒÕàâÕàÐ (¼³æ)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM ßÕàÕÓàãÖÕÝ"
|
msgstr "CAM ßÕàÕÓàãÖÕÝ"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.16\n"
|
"Project-Id-Version: VDR 1.7.16\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
"PO-Revision-Date: 2011-02-15 16:29+0100\n"
|
||||||
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
|
||||||
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
"Language-Team: Slovak <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "Doln
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Horná frekvencia LNB (MHz)"
|
msgstr "Horná frekvencia LNB (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Resetnutie CAMu"
|
msgstr "Resetnutie CAMu"
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
"PO-Revision-Date: 2008-02-28 19:44+0100\n"
|
||||||
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
"Last-Translator: Matjaz Thaler <matjaz.thaler@guest.arnes.si>\n"
|
||||||
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
"Language-Team: Slovenian <vdr@linuxtv.org>\n"
|
||||||
@ -963,6 +963,13 @@ msgstr "Spodnja LNB-frek. (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Zgornja LNB-frek. (MHz)"
|
msgstr "Zgornja LNB-frek. (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Reset CAM-a"
|
msgstr "Reset CAM-a"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.1\n"
|
"Project-Id-Version: VDR 1.7.1\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
"PO-Revision-Date: 2011-01-09 15:57+0100\n"
|
||||||
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
"Last-Translator: Milan Cvijanoviæ <elcom_cvijo@hotmail.com>\n"
|
||||||
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
"Language-Team: Serbian <vdr@linuxtv.org>\n"
|
||||||
@ -981,6 +981,13 @@ msgstr "Donja LNB frekv. (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Gornja LNB frekv. (MHz)"
|
msgstr "Gornja LNB frekv. (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Ponovno pokreni CAM"
|
msgstr "Ponovno pokreni CAM"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
"PO-Revision-Date: 2008-03-12 18:25+0100\n"
|
||||||
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
"Last-Translator: Magnus Andersson <svankan@bahnhof.se>\n"
|
||||||
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
"Language-Team: Swedish <vdr@linuxtv.org>\n"
|
||||||
@ -965,6 +965,13 @@ msgstr "Undre LNB frekvens (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Övre LNB frekvens (MHz)"
|
msgstr "Övre LNB frekvens (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM omstart"
|
msgstr "CAM omstart"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
"PO-Revision-Date: 2008-02-28 00:33+0100\n"
|
||||||
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
"Last-Translator: Oktay Yolgeçen <oktay_73@yahoo.de>\n"
|
||||||
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
"Language-Team: Turkish <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "Alt LNB frekans
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Üst LNB frekansý (MHz)"
|
msgstr "Üst LNB frekansý (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM sýfýrlandý"
|
msgstr "CAM sýfýrlandý"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.7.7\n"
|
"Project-Id-Version: VDR 1.7.7\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
"PO-Revision-Date: 2010-04-25 16:35+0200\n"
|
||||||
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
"Last-Translator: Yarema aka Knedlyk <yupadmin@gmail.com>\n"
|
||||||
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
"Language-Team: Ukrainian <vdr@linuxtv.org>\n"
|
||||||
@ -962,6 +962,13 @@ msgstr "Нижня частота конвертера (МГц)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "Верхня частота конвертера (МГц)"
|
msgstr "Верхня частота конвертера (МГц)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "Перезавантаження CAM"
|
msgstr "Перезавантаження CAM"
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: VDR 1.6.0\n"
|
"Project-Id-Version: VDR 1.6.0\n"
|
||||||
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
"Report-Msgid-Bugs-To: <vdr-bugs@tvdr.de>\n"
|
||||||
"POT-Creation-Date: 2011-08-27 11:54+0200\n"
|
"POT-Creation-Date: 2011-12-03 16:25+0100\n"
|
||||||
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
"PO-Revision-Date: 2009-09-23 23:50+0800\n"
|
||||||
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
"Last-Translator: Nan Feng <nfgx@21cn.com>\n"
|
||||||
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
"Language-Team: Chinese (simplified) <vdr@linuxtv.org>\n"
|
||||||
@ -965,6 +965,13 @@ msgstr "低本振频率 (MHz)"
|
|||||||
msgid "Setup.LNB$High LNB frequency (MHz)"
|
msgid "Setup.LNB$High LNB frequency (MHz)"
|
||||||
msgstr "高本振频率 (MHz)"
|
msgstr "高本振频率 (MHz)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Setup.LNB$Device %d connected to sat cable"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Setup.LNB$own"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "CAM reset"
|
msgid "CAM reset"
|
||||||
msgstr "CAM重置"
|
msgstr "CAM重置"
|
||||||
|
|
||||||
|
5
vdr.c
5
vdr.c
@ -22,7 +22,7 @@
|
|||||||
*
|
*
|
||||||
* The project's page is at http://www.tvdr.de
|
* The project's page is at http://www.tvdr.de
|
||||||
*
|
*
|
||||||
* $Id: vdr.c 2.26 2011/10/16 14:02:34 kls Exp $
|
* $Id: vdr.c 2.27 2011/12/03 15:35:09 kls Exp $
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
@ -639,6 +639,7 @@ int main(int argc, char *argv[])
|
|||||||
// DVB interfaces:
|
// DVB interfaces:
|
||||||
|
|
||||||
cDvbDevice::Initialize();
|
cDvbDevice::Initialize();
|
||||||
|
cDvbDevice::BondDevices(Setup.DeviceBondings);
|
||||||
|
|
||||||
// Initialize plugins:
|
// Initialize plugins:
|
||||||
|
|
||||||
@ -899,7 +900,7 @@ int main(int argc, char *argv[])
|
|||||||
Device = d;
|
Device = d;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (d->MaySwitchTransponder()) {
|
if (d->MaySwitchTransponder(Timer->Channel())) {
|
||||||
DeviceAvailable = true; // avoids using the actual device below
|
DeviceAvailable = true; // avoids using the actual device below
|
||||||
Device = d;
|
Device = d;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user