>But you know, in every proposal I've seen so far struct dvbs2_params >changed a bit -- parameters were added, removed or changed. >And I repeatedly asked for an explanation how the API works, >i.e. how it would be used in practice by an application >developer. Which parameters are necessary for tuning, and where >do you get the values from? Which are only for querying >some detail info for curious people? Which are for receiving >simple HDTV and which are for some exotic DSNG or >IP-via-DVB ACM stuff? [snip] >My impression is that all DVB-S2 proposals so far were immature >and haven't even reached EXPERIMENTAL stage. >(Where EXPERIMENTAL means: Not 100% ready, but good enough to >include in mainline kernels and let people interested in >the subject play with it. IOW it must *work*, and it must >be documented or obvious *how* it works.) > >Look at it this way: If *I* don't understand the API, >how can you expect someone like Klaus Schmidinger implement >support for it in VDR? >- how to do service scan for DVB-S2 >- what changes are necessary for channels.conf >- which new ioctsl, and how to use them >- how to maintain backwards compat with old kernels -- Ok let's go through it step by step -- +/* + * DVB-S2 parameters + */ +struct dvbs2_params { + __u32 symbol_rate; + + enum dvbfe_modulation modulation; + enum dvbfe_fec fec; + enum dvbfe_obc_mode obc_mode; + enum dvbfe_rolloff rolloff; + enum dvbfe_sismis_flag sismis; + __u8 stream_id; + + __u8 pad[32]; +}; Those params are *all* needed for tuning (except the pad of course). Most of them should be self-explanatory. Just a note to the following ones: + enum dvbfe_obc_mode obc_mode; Needed to indicate in which mode the transponder is sending. But don't worry, this information is provided (see below). + enum dvbfe_sismis_flag sismis; + __u8 stream_id; If we set sismis to DVBFE_SISMIS_SINGLE, we have to specify which stream should be read. If sismis is set to DVBFE_SISMIS_MULTIPLE the stream_id is not used. -- How to retrieve needed values -- The same way we do it for dvb-x / atsc right now. There is an initial tuning file containing the values for a first tune. Further channel data is retrieved from s2_satellite_delivery_system_descriptor. Additionally the app has to set _only_ those fields: + enum dvbfe_sismis_flag sismis; + __u8 stream_id; Normally this is DVBFE_SISMIS_MULTIPLE as long as the app doesn't need special behaviour. -- Usage of this api -- >- how to do service scan for DVB-S2 Should be clear now. First do initial tune with the initial tuning file, then get service data from the s2_satellite_delivery_system_descriptor. >- what changes are necessary for channels.conf Well that shouldn't matter at this stage, otherwise we have the "chicken and egg" problem. But I think it's obvious: We add the params for modulation, fec, obc_mode and rolloff to channels.conf. >- which new ioctls, and how to use them DVBFE_GET_DELSYS : get supported delivery systems (should be the first ioctl used) DVBFE_SET_PARAMS : tune DVBFE_GET_PARAMS : get tuning parameters DVBFE_GET_INFO : get supported modulations, fecs, ... >- how to maintain backwards compat with old kernels You mean between this proposed api and further ones? Christoph _______________________________________________ linux-dvb@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb