mirror of
https://github.com/rofafor/vdr-plugin-satip.git
synced 2023-10-10 11:37:42 +00:00
Compare commits
59 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c07d921193 | ||
|
d333bcebb7 | ||
|
0ce8ae7206 | ||
|
2c6c6ea5fd | ||
|
28cc3cae63 | ||
|
0abccf2370 | ||
|
f303298923 | ||
|
f3fe1e9a13 | ||
|
364b4fbec7 | ||
|
b004793ef3 | ||
|
ae403212f7 | ||
|
09941322b1 | ||
|
3713d1a1fa | ||
|
2355dad37b | ||
|
de6c0e1f89 | ||
|
bbd7f2da51 | ||
|
e11396e84d | ||
|
dfb050c297 | ||
|
ee88aadf60 | ||
|
e405a31f48 | ||
|
1a254029d5 | ||
|
87f9555290 | ||
|
b21398938b | ||
|
fb6282b44f | ||
|
01533ef6be | ||
|
1ca7cae7e4 | ||
|
974c26bdd6 | ||
|
ed99cfba79 | ||
|
5b01fa34aa | ||
|
0bad1c1702 | ||
|
6573c38fb6 | ||
|
581ac4966d | ||
|
99e366b261 | ||
|
3b89dd4b01 | ||
|
ee6ac0d48a | ||
|
e6c9776ec9 | ||
|
7aef2a3dff | ||
|
61b56db909 | ||
|
4c45787541 | ||
|
f65dca2910 | ||
|
db0c18ba33 | ||
|
0f9e0014df | ||
|
6bb7fb511b | ||
|
7815821824 | ||
|
bc481bcc4d | ||
|
7289da9f41 | ||
|
d5e0106d8e | ||
|
fe532e2248 | ||
|
b5483b9d77 | ||
|
fd23b0483a | ||
|
18c9b79533 | ||
|
e4f560c66e | ||
|
57ea119d03 | ||
|
ae8298d19a | ||
|
b755dbf318 | ||
|
8f12ce6f55 | ||
|
9d5f7cc703 | ||
|
c1a881ba94 | ||
|
165fd5b14a |
28
HISTORY
28
HISTORY
@@ -165,31 +165,3 @@ VDR Plugin 'satip' Revision History
|
|||||||
- Added support for FRITZ!Box 6490 Cable (Thanks to 9000h).
|
- Added support for FRITZ!Box 6490 Cable (Thanks to 9000h).
|
||||||
- Updated FRITZ!WLAN Repeater DVB-C detection for the latest firmware (Thanks to 9000h).
|
- Updated FRITZ!WLAN Repeater DVB-C detection for the latest firmware (Thanks to 9000h).
|
||||||
- Added GCC7 compatibility (Thanks to Sascha Kuehndel).
|
- Added GCC7 compatibility (Thanks to Sascha Kuehndel).
|
||||||
|
|
||||||
|
|
||||||
===================================
|
|
||||||
VDR Plugin 'satip' Revision History
|
|
||||||
===================================
|
|
||||||
|
|
||||||
2016-12-18: Version 2.3.0
|
|
||||||
|
|
||||||
- Updated for vdr-2.3.1.
|
|
||||||
- Updated German translation (Thanks to Frank Neumann).
|
|
||||||
- Fixed Panasonic CXW804 support (Thanks to Tobias Grimm).
|
|
||||||
- Fixed C++11 support (Thanks to Tobias Grimm).
|
|
||||||
- Fixed server assigment with source validation (Thanks to Patrick Boettcher).
|
|
||||||
- Added configurable RTP/RTCP ports (Thanks to chriszero).
|
|
||||||
- Added support for X-SATIP-RTSP-Port header.
|
|
||||||
- Added multicast and RTP-over-TCP support.
|
|
||||||
- Added support for activating/deactivating server on-the-fly.
|
|
||||||
- Extended command-line parameters for setting server quirks.
|
|
||||||
|
|
||||||
2017-08-15: Version 2.3.1
|
|
||||||
|
|
||||||
- Updated for vdr-2.3.7 (Thanks to Klaus Schmidinger).
|
|
||||||
- Added Polish translation (Thanks to Tomasz Nowak).
|
|
||||||
- Updated Catalan and Spanish translations (Thanks to Gabriel Bonich).
|
|
||||||
- Added support for KATHREIN SatIP Server (Thanks to kavanu).
|
|
||||||
- Added support for FRITZ!Box 6490 Cable (Thanks to 9000h).
|
|
||||||
- Updated FRITZ!WLAN Repeater DVB-C detection for the latest firmware (Thanks to 9000h).
|
|
||||||
- Added GCC7 compatibility (Thanks to Sascha Kuehndel).
|
|
||||||
|
27
Makefile
27
Makefile
@@ -88,15 +88,14 @@ all: $(SOFILE) i18n
|
|||||||
### Implicit rules:
|
### Implicit rules:
|
||||||
|
|
||||||
%.o: %.c
|
%.o: %.c
|
||||||
@echo CC $@
|
$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<
|
||||||
$(Q)$(CXX) $(CXXFLAGS) -c $(DEFINES) $(INCLUDES) -o $@ $<
|
|
||||||
|
|
||||||
### Dependencies:
|
### Dependencies:
|
||||||
|
|
||||||
MAKEDEP = $(CXX) -MM -MG
|
MAKEDEP = $(CXX) -MM -MG
|
||||||
DEPFILE = .dependencies
|
DEPFILE = .dependencies
|
||||||
$(DEPFILE): Makefile
|
$(DEPFILE): Makefile
|
||||||
$(Q)$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
|
@$(MAKEDEP) $(CXXFLAGS) $(DEFINES) $(INCLUDES) $(OBJS:%.o=%.c) > $@
|
||||||
|
|
||||||
-include $(DEPFILE)
|
-include $(DEPFILE)
|
||||||
|
|
||||||
@@ -109,21 +108,17 @@ I18Nmsgs = $(addprefix $(DESTDIR)$(LOCDIR)/, $(addsuffix /LC_MESSAGES/vdr-$(PLU
|
|||||||
I18Npot = $(PODIR)/$(PLUGIN).pot
|
I18Npot = $(PODIR)/$(PLUGIN).pot
|
||||||
|
|
||||||
%.mo: %.po
|
%.mo: %.po
|
||||||
@echo MO $@
|
msgfmt -c -o $@ $<
|
||||||
$(Q)msgfmt -c -o $@ $<
|
|
||||||
|
|
||||||
$(I18Npot): $(wildcard *.c)
|
$(I18Npot): $(wildcard *.c)
|
||||||
@echo GT $@
|
xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^`
|
||||||
$(Q)xgettext -C -cTRANSLATORS --no-wrap --no-location -k -ktr -ktrNOOP --package-name=vdr-$(PLUGIN) --package-version=$(VERSION) --msgid-bugs-address='<see README>' -o $@ `ls $^`
|
|
||||||
|
|
||||||
%.po: $(I18Npot)
|
%.po: $(I18Npot)
|
||||||
@echo PO $@
|
msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
|
||||||
$(Q)msgmerge -U --no-wrap --no-location --backup=none -q -N $@ $<
|
|
||||||
@touch $@
|
@touch $@
|
||||||
|
|
||||||
$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
|
$(I18Nmsgs): $(DESTDIR)$(LOCDIR)/%/LC_MESSAGES/vdr-$(PLUGIN).mo: $(PODIR)/%.mo
|
||||||
@echo IN $@
|
install -D -m644 $< $@
|
||||||
$(Q)install -D -m644 $< $@
|
|
||||||
|
|
||||||
.PHONY: i18n
|
.PHONY: i18n
|
||||||
i18n: $(I18Nmo) $(I18Npot)
|
i18n: $(I18Nmo) $(I18Npot)
|
||||||
@@ -133,13 +128,11 @@ install-i18n: $(I18Nmsgs)
|
|||||||
### Targets:
|
### Targets:
|
||||||
|
|
||||||
$(SOFILE): $(OBJS)
|
$(SOFILE): $(OBJS)
|
||||||
@echo LD $@
|
$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
|
||||||
$(Q)$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
|
@$(STRIP) $@
|
||||||
$(Q)$(STRIP) $@
|
|
||||||
|
|
||||||
install-lib: $(SOFILE)
|
install-lib: $(SOFILE)
|
||||||
@echo IN $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
|
install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
|
||||||
$(Q)install -D $^ $(DESTDIR)$(LIBDIR)/$^.$(APIVERSION)
|
|
||||||
|
|
||||||
install-conf:
|
install-conf:
|
||||||
@mkdir -p $(DESTDIR)$(CFGDIR)/plugins/$(PLUGIN)
|
@mkdir -p $(DESTDIR)$(CFGDIR)/plugins/$(PLUGIN)
|
||||||
@@ -160,4 +153,4 @@ clean:
|
|||||||
|
|
||||||
.PHONY: cppcheck
|
.PHONY: cppcheck
|
||||||
cppcheck:
|
cppcheck:
|
||||||
$(Q)cppcheck --language=c++ --enable=all -v -f $(OBJS:%.o=%.c)
|
@cppcheck --language=c++ --enable=all -v -f $(OBJS:%.o=%.c)
|
||||||
|
56
device.c
56
device.c
@@ -19,9 +19,8 @@ cMutex cSatipDevice::mutexS = cMutex();
|
|||||||
|
|
||||||
cSatipDevice::cSatipDevice(unsigned int indexP)
|
cSatipDevice::cSatipDevice(unsigned int indexP)
|
||||||
: deviceIndexM(indexP),
|
: deviceIndexM(indexP),
|
||||||
bytesDeliveredM(0),
|
isPacketDeliveredM(false),
|
||||||
isOpenDvrM(false),
|
isOpenDvrM(false),
|
||||||
checkTsBufferM(false),
|
|
||||||
deviceNameM(*cString::sprintf("%s %d", *DeviceType(), deviceIndexM)),
|
deviceNameM(*cString::sprintf("%s %d", *DeviceType(), deviceIndexM)),
|
||||||
channelM(),
|
channelM(),
|
||||||
createdM(0),
|
createdM(0),
|
||||||
@@ -108,8 +107,12 @@ cString cSatipDevice::GetSatipStatus(void)
|
|||||||
bool live = (device == cDevice::ActualDevice());
|
bool live = (device == cDevice::ActualDevice());
|
||||||
bool lock = device->HasLock();
|
bool lock = device->HasLock();
|
||||||
const cChannel *channel = device->GetCurrentlyTunedTransponder();
|
const cChannel *channel = device->GetCurrentlyTunedTransponder();
|
||||||
|
#if defined(APIVERSNUM) && APIVERSNUM >= 20301
|
||||||
LOCK_TIMERS_READ;
|
LOCK_TIMERS_READ;
|
||||||
for (const cTimer *timer = Timers->First(); timer; timer = Timers->Next(timer)) {
|
for (const cTimer *timer = Timers->First(); timer; timer = Timers->Next(timer)) {
|
||||||
|
#else
|
||||||
|
for (cTimer *timer = Timers.First(); timer; timer = Timers.Next(timer)) {
|
||||||
|
#endif
|
||||||
if (timer->Recording()) {
|
if (timer->Recording()) {
|
||||||
cRecordControl *control = cRecordControls::GetRecordControl(timer);
|
cRecordControl *control = cRecordControls::GetRecordControl(timer);
|
||||||
if (control && control->Device() == device)
|
if (control && control->Device() == device)
|
||||||
@@ -138,14 +141,20 @@ cString cSatipDevice::GetSatipStatus(void)
|
|||||||
cString cSatipDevice::GetGeneralInformation(void)
|
cString cSatipDevice::GetGeneralInformation(void)
|
||||||
{
|
{
|
||||||
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
||||||
|
#if defined(APIVERSNUM) && APIVERSNUM >= 20301
|
||||||
LOCK_CHANNELS_READ;
|
LOCK_CHANNELS_READ;
|
||||||
|
#endif
|
||||||
return cString::sprintf("SAT>IP device: %d\nCardIndex: %d\nStream: %s\nSignal: %s\nStream bitrate: %s\n%sChannel: %s\n",
|
return cString::sprintf("SAT>IP device: %d\nCardIndex: %d\nStream: %s\nSignal: %s\nStream bitrate: %s\n%sChannel: %s\n",
|
||||||
deviceIndexM, CardIndex(),
|
deviceIndexM, CardIndex(),
|
||||||
pTunerM ? *pTunerM->GetInformation() : "",
|
pTunerM ? *pTunerM->GetInformation() : "",
|
||||||
pTunerM ? *pTunerM->GetSignalStatus() : "",
|
pTunerM ? *pTunerM->GetSignalStatus() : "",
|
||||||
pTunerM ? *pTunerM->GetTunerStatistic() : "",
|
pTunerM ? *pTunerM->GetTunerStatistic() : "",
|
||||||
*GetBufferStatistic(),
|
*GetBufferStatistic(),
|
||||||
|
#if defined(APIVERSNUM) && APIVERSNUM >= 20301
|
||||||
*Channels->GetByNumber(cDevice::CurrentChannel())->ToText());
|
*Channels->GetByNumber(cDevice::CurrentChannel())->ToText());
|
||||||
|
#else
|
||||||
|
*Channels.GetByNumber(cDevice::CurrentChannel())->ToText());
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
cString cSatipDevice::GetPidsInformation(void)
|
cString cSatipDevice::GetPidsInformation(void)
|
||||||
@@ -216,21 +225,6 @@ bool cSatipDevice::AvoidRecording(void) const
|
|||||||
return SatipConfig.IsOperatingModeLow();
|
return SatipConfig.IsOperatingModeLow();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool cSatipDevice::SignalStats(int &Valid, double *Strength, double *Cnr, double *BerPre, double *BerPost, double *Per, int *Status) const
|
|
||||||
{
|
|
||||||
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
|
||||||
Valid = DTV_STAT_VALID_NONE;
|
|
||||||
if (Strength && pTunerM) {
|
|
||||||
*Strength = pTunerM->SignalStrengthDBm();
|
|
||||||
Valid |= DTV_STAT_VALID_STRENGTH;
|
|
||||||
}
|
|
||||||
if (Status) {
|
|
||||||
*Status = HasLock() ? (DTV_STAT_HAS_SIGNAL | DTV_STAT_HAS_CARRIER | DTV_STAT_HAS_VITERBI | DTV_STAT_HAS_SYNC | DTV_STAT_HAS_LOCK) : DTV_STAT_HAS_NONE;
|
|
||||||
Valid |= DTV_STAT_VALID_STATUS;
|
|
||||||
}
|
|
||||||
return Valid != DTV_STAT_VALID_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cSatipDevice::SignalStrength(void) const
|
int cSatipDevice::SignalStrength(void) const
|
||||||
{
|
{
|
||||||
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
||||||
@@ -425,7 +419,7 @@ void cSatipDevice::CloseFilter(int handleP)
|
|||||||
bool cSatipDevice::OpenDvr(void)
|
bool cSatipDevice::OpenDvr(void)
|
||||||
{
|
{
|
||||||
debug9("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
debug9("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
||||||
bytesDeliveredM = 0;
|
isPacketDeliveredM = false;
|
||||||
tsBufferM->Clear();
|
tsBufferM->Clear();
|
||||||
if (pTunerM)
|
if (pTunerM)
|
||||||
pTunerM->Open();
|
pTunerM->Open();
|
||||||
@@ -511,17 +505,13 @@ bool cSatipDevice::IsIdle(void)
|
|||||||
return !Receiving();
|
return !Receiving();
|
||||||
}
|
}
|
||||||
|
|
||||||
uchar *cSatipDevice::GetData(int *availableP, bool checkTsBuffer)
|
uchar *cSatipDevice::GetData(int *availableP)
|
||||||
{
|
{
|
||||||
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
||||||
if (isOpenDvrM && tsBufferM) {
|
if (isOpenDvrM && tsBufferM) {
|
||||||
int count = 0;
|
int count = 0;
|
||||||
if (bytesDeliveredM) {
|
if (isPacketDeliveredM)
|
||||||
tsBufferM->Del(bytesDeliveredM);
|
SkipData(TS_SIZE);
|
||||||
bytesDeliveredM = 0;
|
|
||||||
}
|
|
||||||
if (checkTsBuffer && tsBufferM->Available() < TS_SIZE)
|
|
||||||
return NULL;
|
|
||||||
uchar *p = tsBufferM->Get(count);
|
uchar *p = tsBufferM->Get(count);
|
||||||
if (p && count >= TS_SIZE) {
|
if (p && count >= TS_SIZE) {
|
||||||
if (*p != TS_SYNC_BYTE) {
|
if (*p != TS_SYNC_BYTE) {
|
||||||
@@ -535,7 +525,7 @@ uchar *cSatipDevice::GetData(int *availableP, bool checkTsBuffer)
|
|||||||
info("Skipped %d bytes to sync on TS packet", count);
|
info("Skipped %d bytes to sync on TS packet", count);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
bytesDeliveredM = TS_SIZE;
|
isPacketDeliveredM = true;
|
||||||
if (availableP)
|
if (availableP)
|
||||||
*availableP = count;
|
*availableP = count;
|
||||||
// Update pid statistics
|
// Update pid statistics
|
||||||
@@ -549,7 +539,8 @@ uchar *cSatipDevice::GetData(int *availableP, bool checkTsBuffer)
|
|||||||
void cSatipDevice::SkipData(int countP)
|
void cSatipDevice::SkipData(int countP)
|
||||||
{
|
{
|
||||||
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
debug16("%s [device %u]", __PRETTY_FUNCTION__, deviceIndexM);
|
||||||
bytesDeliveredM = countP;
|
tsBufferM->Del(countP);
|
||||||
|
isPacketDeliveredM = false;
|
||||||
// Update buffer statistics
|
// Update buffer statistics
|
||||||
AddBufferStatistic(countP, tsBufferM->Available());
|
AddBufferStatistic(countP, tsBufferM->Available());
|
||||||
}
|
}
|
||||||
@@ -563,12 +554,11 @@ bool cSatipDevice::GetTSPacket(uchar *&dataP)
|
|||||||
if (cCamSlot *cs = CamSlot()) {
|
if (cCamSlot *cs = CamSlot()) {
|
||||||
if (cs->WantsTsData()) {
|
if (cs->WantsTsData()) {
|
||||||
int available;
|
int available;
|
||||||
dataP = GetData(&available, checkTsBufferM);
|
dataP = GetData(&available);
|
||||||
if (!dataP)
|
if (dataP) {
|
||||||
available = 0;
|
dataP = cs->Decrypt(dataP, available);
|
||||||
dataP = cs->Decrypt(dataP, available);
|
SkipData(available);
|
||||||
SkipData(available);
|
}
|
||||||
checkTsBufferM = dataP != NULL;
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
8
device.h
8
device.h
@@ -32,9 +32,8 @@ private:
|
|||||||
eTuningTimeoutMs = 1000 // in milliseconds
|
eTuningTimeoutMs = 1000 // in milliseconds
|
||||||
};
|
};
|
||||||
unsigned int deviceIndexM;
|
unsigned int deviceIndexM;
|
||||||
int bytesDeliveredM;
|
bool isPacketDeliveredM;
|
||||||
bool isOpenDvrM;
|
bool isOpenDvrM;
|
||||||
bool checkTsBufferM;
|
|
||||||
cString deviceNameM;
|
cString deviceNameM;
|
||||||
cChannel channelM;
|
cChannel channelM;
|
||||||
cRingBufferLinear *tsBufferM;
|
cRingBufferLinear *tsBufferM;
|
||||||
@@ -65,7 +64,6 @@ public:
|
|||||||
virtual cString DeviceType(void) const;
|
virtual cString DeviceType(void) const;
|
||||||
virtual cString DeviceName(void) const;
|
virtual cString DeviceName(void) const;
|
||||||
virtual bool AvoidRecording(void) const;
|
virtual bool AvoidRecording(void) const;
|
||||||
virtual bool SignalStats(int &Valid, double *Strength = NULL, double *Cnr = NULL, double *BerPre = NULL, double *BerPost = NULL, double *Per = NULL, int *Status = NULL) const;
|
|
||||||
virtual int SignalStrength(void) const;
|
virtual int SignalStrength(void) const;
|
||||||
virtual int SignalQuality(void) const;
|
virtual int SignalQuality(void) const;
|
||||||
|
|
||||||
@@ -85,7 +83,7 @@ protected:
|
|||||||
|
|
||||||
// for recording
|
// for recording
|
||||||
private:
|
private:
|
||||||
uchar *GetData(int *availableP = NULL, bool checkTsBuffer = false);
|
uchar *GetData(int *availableP = NULL);
|
||||||
void SkipData(int countP);
|
void SkipData(int countP);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -101,7 +99,7 @@ public:
|
|||||||
|
|
||||||
// for transponder lock
|
// for transponder lock
|
||||||
public:
|
public:
|
||||||
virtual bool HasLock(int timeoutMsP = 0) const;
|
virtual bool HasLock(int timeoutMsP) const;
|
||||||
|
|
||||||
// for common interface
|
// for common interface
|
||||||
public:
|
public:
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: vdr-satip 2.3.1\n"
|
"Project-Id-Version: vdr-satip 2.2.5\n"
|
||||||
"Report-Msgid-Bugs-To: <see README>\n"
|
"Report-Msgid-Bugs-To: <see README>\n"
|
||||||
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
||||||
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: vdr-satip 2.3.1\n"
|
"Project-Id-Version: vdr-satip 2.2.5\n"
|
||||||
"Report-Msgid-Bugs-To: <see README>\n"
|
"Report-Msgid-Bugs-To: <see README>\n"
|
||||||
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
||||||
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: vdr-satip 2.3.1\n"
|
"Project-Id-Version: vdr-satip 2.2.5\n"
|
||||||
"Report-Msgid-Bugs-To: <see README>\n"
|
"Report-Msgid-Bugs-To: <see README>\n"
|
||||||
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
||||||
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: vdr-satip 2.3.1\n"
|
"Project-Id-Version: vdr-satip 2.2.5\n"
|
||||||
"Report-Msgid-Bugs-To: <see README>\n"
|
"Report-Msgid-Bugs-To: <see README>\n"
|
||||||
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
||||||
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: vdr-satip 2.3.1\n"
|
"Project-Id-Version: vdr-satip 2.2.5\n"
|
||||||
"Report-Msgid-Bugs-To: <see README>\n"
|
"Report-Msgid-Bugs-To: <see README>\n"
|
||||||
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
"POT-Creation-Date: 2017-08-15 08:15+0300\n"
|
||||||
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
"PO-Revision-Date: 2017-08-15 08:15+0300\n"
|
||||||
|
6
satip.c
6
satip.c
@@ -20,15 +20,15 @@
|
|||||||
#warning "CURL version >= 7.36.0 is recommended"
|
#warning "CURL version >= 7.36.0 is recommended"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(APIVERSNUM) && APIVERSNUM < 20307
|
#if defined(APIVERSNUM) && APIVERSNUM < 20200
|
||||||
#error "VDR-2.3.7 API version or greater is required!"
|
#error "VDR-2.2.0 API version or greater is required!"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef GITVERSION
|
#ifndef GITVERSION
|
||||||
#define GITVERSION ""
|
#define GITVERSION ""
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const char VERSION[] = "2.3.1" GITVERSION;
|
const char VERSION[] = "2.2.5" GITVERSION;
|
||||||
static const char DESCRIPTION[] = trNOOP("SAT>IP Devices");
|
static const char DESCRIPTION[] = trNOOP("SAT>IP Devices");
|
||||||
|
|
||||||
class cPluginSatip : public cPlugin {
|
class cPluginSatip : public cPlugin {
|
||||||
|
12
tuner.c
12
tuner.c
@@ -40,7 +40,6 @@ cSatipTuner::cSatipTuner(cSatipDeviceIf &deviceP, unsigned int packetLenP)
|
|||||||
externalStateM(),
|
externalStateM(),
|
||||||
timeoutM(eMinKeepAliveIntervalMs),
|
timeoutM(eMinKeepAliveIntervalMs),
|
||||||
hasLockM(false),
|
hasLockM(false),
|
||||||
signalStrengthDBmM(0.0),
|
|
||||||
signalStrengthM(-1),
|
signalStrengthM(-1),
|
||||||
signalQualityM(-1),
|
signalQualityM(-1),
|
||||||
frontendIdM(-1),
|
frontendIdM(-1),
|
||||||
@@ -136,7 +135,6 @@ void cSatipTuner::Action(void)
|
|||||||
// Quirk for devices without valid reception data
|
// Quirk for devices without valid reception data
|
||||||
if (currentServerM.IsQuirk(cSatipServer::eSatipQuirkForceLock)) {
|
if (currentServerM.IsQuirk(cSatipServer::eSatipQuirkForceLock)) {
|
||||||
hasLockM = true;
|
hasLockM = true;
|
||||||
signalStrengthDBmM = eDefaultSignalStrengthDBm;
|
|
||||||
signalStrengthM = eDefaultSignalStrength;
|
signalStrengthM = eDefaultSignalStrength;
|
||||||
signalQualityM = eDefaultSignalQuality;
|
signalQualityM = eDefaultSignalQuality;
|
||||||
}
|
}
|
||||||
@@ -266,7 +264,6 @@ bool cSatipTuner::Disconnect(void)
|
|||||||
|
|
||||||
// Reset signal parameters
|
// Reset signal parameters
|
||||||
hasLockM = false;
|
hasLockM = false;
|
||||||
signalStrengthDBmM = 0.0;
|
|
||||||
signalStrengthM = -1;
|
signalStrengthM = -1;
|
||||||
signalQualityM = -1;
|
signalQualityM = -1;
|
||||||
frontendIdM = -1;
|
frontendIdM = -1;
|
||||||
@@ -336,9 +333,8 @@ void cSatipTuner::ProcessApplicationData(u_char *bufferP, int lengthP)
|
|||||||
// No signal corresponds to 0
|
// No signal corresponds to 0
|
||||||
c = strstr(c, ",");
|
c = strstr(c, ",");
|
||||||
value = min(atoi(++c), 255);
|
value = min(atoi(++c), 255);
|
||||||
signalStrengthDBmM = (value >= 0) ? 40.0 * (value - 32) / 192.0 - 65.0 : 0.0;
|
|
||||||
// Scale value to 0-100
|
// Scale value to 0-100
|
||||||
signalStrengthM = (value >= 0) ? value * 100 / 255 : -1;
|
signalStrengthM = (value >= 0) ? (value * 100 / 255) : -1;
|
||||||
|
|
||||||
// lock:
|
// lock:
|
||||||
// lock Set to one of the following values:
|
// lock Set to one of the following values:
|
||||||
@@ -674,12 +670,6 @@ int cSatipTuner::SignalStrength(void)
|
|||||||
return signalStrengthM;
|
return signalStrengthM;
|
||||||
}
|
}
|
||||||
|
|
||||||
double cSatipTuner::SignalStrengthDBm(void)
|
|
||||||
{
|
|
||||||
debug16("%s [device %d]", __PRETTY_FUNCTION__, deviceIdM);
|
|
||||||
return signalStrengthDBmM;
|
|
||||||
}
|
|
||||||
|
|
||||||
int cSatipTuner::SignalQuality(void)
|
int cSatipTuner::SignalQuality(void)
|
||||||
{
|
{
|
||||||
debug16("%s [device %d]", __PRETTY_FUNCTION__, deviceIdM);
|
debug16("%s [device %d]", __PRETTY_FUNCTION__, deviceIdM);
|
||||||
|
23
tuner.h
23
tuner.h
@@ -78,17 +78,16 @@ class cSatipTuner : public cThread, public cSatipTunerStatistics, public cSatipT
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
enum {
|
enum {
|
||||||
eDummyPid = 100,
|
eDummyPid = 100,
|
||||||
eDefaultSignalStrengthDBm = -25,
|
eDefaultSignalStrength = 15,
|
||||||
eDefaultSignalStrength = 224,
|
eDefaultSignalQuality = 224,
|
||||||
eDefaultSignalQuality = 15,
|
eSleepTimeoutMs = 250, // in milliseconds
|
||||||
eSleepTimeoutMs = 250, // in milliseconds
|
eStatusUpdateTimeoutMs = 1000, // in milliseconds
|
||||||
eStatusUpdateTimeoutMs = 1000, // in milliseconds
|
ePidUpdateIntervalMs = 250, // in milliseconds
|
||||||
ePidUpdateIntervalMs = 250, // in milliseconds
|
eConnectTimeoutMs = 5000, // in milliseconds
|
||||||
eConnectTimeoutMs = 5000, // in milliseconds
|
eIdleCheckTimeoutMs = 15000, // in milliseconds
|
||||||
eIdleCheckTimeoutMs = 15000, // in milliseconds
|
eTuningTimeoutMs = 20000, // in milliseconds
|
||||||
eTuningTimeoutMs = 20000, // in milliseconds
|
eMinKeepAliveIntervalMs = 30000 // in milliseconds
|
||||||
eMinKeepAliveIntervalMs = 30000 // in milliseconds
|
|
||||||
};
|
};
|
||||||
enum eTunerState { tsIdle, tsRelease, tsSet, tsTuned, tsLocked };
|
enum eTunerState { tsIdle, tsRelease, tsSet, tsTuned, tsLocked };
|
||||||
enum eStateMode { smInternal, smExternal };
|
enum eStateMode { smInternal, smExternal };
|
||||||
@@ -116,7 +115,6 @@ private:
|
|||||||
cVector<eTunerState> externalStateM;
|
cVector<eTunerState> externalStateM;
|
||||||
int timeoutM;
|
int timeoutM;
|
||||||
bool hasLockM;
|
bool hasLockM;
|
||||||
double signalStrengthDBmM;
|
|
||||||
int signalStrengthM;
|
int signalStrengthM;
|
||||||
int signalQualityM;
|
int signalQualityM;
|
||||||
int frontendIdM;
|
int frontendIdM;
|
||||||
@@ -151,7 +149,6 @@ public:
|
|||||||
bool Close(void);
|
bool Close(void);
|
||||||
int FrontendId(void);
|
int FrontendId(void);
|
||||||
int SignalStrength(void);
|
int SignalStrength(void);
|
||||||
double SignalStrengthDBm(void);
|
|
||||||
int SignalQuality(void);
|
int SignalQuality(void);
|
||||||
bool HasLock(void);
|
bool HasLock(void);
|
||||||
cString GetSignalStatus(void);
|
cString GetSignalStatus(void);
|
||||||
|
Reference in New Issue
Block a user