Hi list,
I recently lost access to all vertically polarised channels and after quite a bit of floundering about I discovered the reason for this is due to the case of the polarisation character in channels.conf.
According to the vdr changelog it has been possible to specify this in either upper or lower case since version 0.6 but it seems this is not correct - at least in 1.7.31. I generate my channels.conf with w_scan and it produces lower case "h" and "v" for polarisation. It seemed to work OK for the horizontal channels but not the vertical. Perhaps it works for horizontal because this is the default position...
Anyway I have resolved my issue by manually changing the case of these characters in channels.conf but wondered if this is really a bug or just a misunderstanding on my part.
Regards,
Mike
I'm pretty sure it is the case as I have tested the following two strings with no other changes and get different results.
ITV1 London;BSkyB:10758:VC56M2O0S0:S28.2E:22000:3328=2:3329=eng@4,3330=NAR@4:2326;2327=eng:0:10060:2:2044:0 # This works ITV1 London;BSkyB:10758:vC56M2O0S0:S28.2E:22000:3328=2:3329=eng@4,3330=NAR@4:2326;2327=eng:0:10060:2:2044:0 # This doesn't
Mike
Hi,
I can confirm this problem, at least in 1.7.27 (which I'm using at the moment). I use the attached patch to resolve it.
Am 08.11.2012 10:19, schrieb Klaus Schmidinger:
Right, but the toupper() is only in the comparision, but it passes the original (lowercase) value. And later during tuning the comparision fails.
Regards.
On 08.11.2012, at 20:43, Stefan Huelswitt s.huelswitt@gmx.de wrote:
Ah, now I see why it works here - I'm using DiSEqC. Like apparently almost everybody else, otherwise this problem should have surfaced much earlier ;-)
Klaus
On 08.11.2012 21:14, Klaus Schmidinger wrote:
Since there are also other places where cDvbTransponderParameters::Polarization() is used, I'm going to fix the case right where the original string is parsed:
--- dvbdevice.c 2012/10/07 11:11:30 2.74 +++ dvbdevice.c 2012/12/03 14:07:01 @@ -261,16 +261,16 @@ case 'C': s = ParseParameter(s, coderateH, CoderateValues); break; case 'D': s = ParseParameter(s, coderateL, CoderateValues); break; case 'G': s = ParseParameter(s, guard, GuardValues); break; - case 'H': polarization = *s++; break; + case 'H': polarization = 'H'; s++; break; case 'I': s = ParseParameter(s, inversion, InversionValues); break; - case 'L': polarization = *s++; break; + case 'L': polarization = 'L'; s++; break; case 'M': s = ParseParameter(s, modulation, ModulationValues); break; case 'O': s = ParseParameter(s, rollOff, RollOffValues); break; case 'P': s = ParseParameter(s, plpId); break; - case 'R': polarization = *s++; break; + case 'R': polarization = 'R'; s++; break; case 'S': s = ParseParameter(s, system, SystemValuesSat); break; // we only need the numerical value, so Sat or Terr doesn't matter case 'T': s = ParseParameter(s, transmission, TransmissionValues); break; - case 'V': polarization = *s++; break; + case 'V': polarization = 'V'; s++; break; case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break; default: esyslog("ERROR: unknown parameter key '%c'", *s); return false;
Klaus