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@xxxxxxxxx [mailto:vdr-bounces@xxxxxxxxxxx] Namens Niels >>>> Wagenaar >>>> Verzonden: zaterdag 22 november 2008 14:13 >>>> Aan: VDR Mailing List >>>> Onderwerp: Re: 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 _______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr