[PATCH] Re: [linux-dvb] [PATCH] Multi protocol support (stage #1)

Trent Piepho xyzzy at speakeasy.org
Sun May 7 19:34:44 CEST 2006


On Sun, 7 May 2006, Manu Abraham wrote:
> But any way here is what you said ..
>
> Trent Piepho wrote:
>  > On Sat, 22 Apr 2006, Manu Abraham wrote:
>  >> After some rework landed up with a patch like this.
>
> > I don't get it, what is 'modcod'?  There is one field named modcod,
> > (dvb_frontend_params).sat.modcod, that's only for DVB-S.  Do you mean
> > (dvb_frontend_params).caps.delivery?  So if you set .caps.delivery=0 then
> > you get the union of "all the available modulation and coding types" inside
> > .caps.modulation?  That doesn't make sense either.

But that is older!  FE_DELSYS_QUERY went away between ver 2 and ver 3, that
comment was about ver 1.  Anyway, look at what was in that version:

+/**
+ *     Case #1
+ *     If we make a call FE_GET_PARAMS with modcod=0x00
+ *     and do a FE_GET_PARAMS, it will simply return
+ *     all the available modulation and coding types used.
+ *
+ *     Case #2
+ *     calling FE_GET_PARAMS with the corresponding
+ *     MODCOD type will return the parameters
+ *     available for the corresponding MODCOD
+ */
+#define FE_GET_PARAMS          _IOWR('o', 82, struct dvb_frontend_params)

In case #1 you say, "with modcod=0x00".  Here is the defintion of struct
dvb_frontend_params:

struct dvb_frontend_params {
       __u32                           frequency;
       fe_spectral_inversion_t         inversion;
       struct fe_cap                   caps;
       union {
               struct sat_params       sat;
               struct cab_params       cab;
               struct ter_params       ter;
       } delsys;
}

What is the field named modcod that should be set to zero?  I don't see
anything called modcod here.  That is what I was asking.

You wrote, "it will simply return all the available modulation and coding
types used."  I was asking what this meant.  I still can't figure out what you
meant!  What would the kernel side code look like?

xxx_get_params(struct dvb_frontend_params *p)
{
    /* Case #1 */
    if(p->????modcod???? == 0) {
        sat_modcod_t s = MOD_QPSK_1_4|MOD_QPSK_1_3|MOD_QPSK_2_5|...;
	cab_modcod_t c = MOD_QAM_64|MOD_QAM_256;
	ter_modcod_t t = MOD_COFDM;
	atsc_modcode_t a = MOD_VSB8;
	p->caps.modulation.sat = s | c | t | a;
	p->caps.delivery = FE_DELSYS_DVB_S|FE_DELSYS_DVB_C|
	                   FE_DELSYS_DVB_T|FE_DELSYS_ATSC;
	return 0;
    }
    /* Case #2 */
}

Surely, this isn't what you meant!?  How can you possible return all the
available modulation and coding types at the same time, when they are in a
union?



More information about the linux-dvb mailing list