[vdr] VDR -> S2API: 2 questions

Klaus Schmidinger Klaus.Schmidinger at cadsoft.de
Sat Nov 22 16:14:57 CET 2008


On 22.11.2008 15:56, Klaus Schmidinger wrote:
> On 22.11.2008 15:47, Klaus Schmidinger wrote:
>> On 22.11.2008 14:17, Niels Wagenaar wrote:
>>>> -----Oorspronkelijk bericht-----
>>>> Van: n.wagenaar at xs4all.nl [mailto:vdr-bounces at linuxtv.org] Namens Niels
>>>> Wagenaar
>>>> Verzonden: zaterdag 22 november 2008 14:13
>>>> Aan: VDR Mailing List
>>>> Onderwerp: Re: [vdr] VDR -> S2API: 2 questions
>>>>
>>>> The patch from 7-10 is indeed the latest. There weren't any changes in
>>>> S2API in the last weeks, which would or could my VDR/S2API patch.
>>>>
>>> (Damn Send button!)
>>>
>>> Which would or could break my VDR/S2API patch ;-)
>>>
>>> BTW, only DVB-S, DVB-S2 and DVB-T is really tested by me (and with great success). The DVB-C code is theory and untested.
>> This part of your patch is a little irritating:
>>
>> -     if (ioctl(fd_frontend, DVBFE_GET_DELSYS, &frontendType) >= 0) {
>> +//     if (ioctl(fd_frontend, DVBFE_GET_DELSYS, &frontendType) >= 0) {
>> +     dvb_frontend_info feinfo;
>> +     fe_type fetype;
>> +     if (ioctl(fd_frontend, FE_GET_INFO, &feinfo) >= 0) {
>> +        fetype =  feinfo.type;
>> +        if (fetype == FE_QPSK)
>> +            frontendType = SYS_DVBS;
>> +        if (fetype == FE_OFDM)
>> +            frontendType = SYS_DVBT;
>> +        if (fetype == FE_QAM)
>> +            frontendType = SYS_DVBC_ANNEX_AC;
>> +        if (fetype == FE_ATSC)
>> +            frontendType = SYS_ATSC;
>> +
>>          const char **DeliverySystem = DeliverySystems;
>>          cString ds;
>> +       cString check;
>>          for (int i = 0; i < 32; i++) {
>>              if (frontendType & (1u << i)) {
>>                 numProvidedSystems++;
>>
>>
>> In the multiproto driver, frontendType was a flag variable, where each bit
>> indicated the presence of a particular frontend. That way DVB cards with
>> different frontends were able to report all the frontend types they
>> provide.
>>
>> In S2API this is apparently an enum type, so the subsequent flag checking makes
>> no sense any more. Or am I missing something?
>>
>> How does a DVB device tell the application about its frontend types in S2API?
> 
> One more thing:
> 
> +       // Following is a hack so that DVB-S cards don't get DVB-S2 transports.
> +       // If check has a value and is not NULL, it means that the card can handle
> +       // DVB-S2 transports and frontendType is forces to SYS_DVBS2.
> +       check = strstr(ds,"DVBS2");
> +       if (*check)
> +       {
> +           isyslog("device %d forced to frontendType SYS_DVBS2\n", CardIndex() + 1);
> +          frontendType = SYS_DVBS2;
> +       }
> 
> How would "DVBS2" ever get into the ds string?
> The flag checks are completely bogus, and the explicit setting of frontendType
> above only sets SYS_DVBS, and not SYS_DVBS2.

Maybe I'm totally missing something here, but I can't figure out how
an application using the S2API driver can tell whether a DVB device is
DVB-S or DVB-S2. Can somebody please point me in the right direction here?

Klaus



More information about the vdr mailing list