int dvbfe_sec_set(struct dvbfe_handle *fe, struct dvbfe_sec_config *sec_config, struct dvbfe_parameters *params, int timeout) { int tmp; struct dvbfe_parameters localparams; struct dvbfe_parameters *topass; // perform SEC switch(sec_config->type) { case DVBFE_SEC_CONFIG_NONE: break; case DVBFE_SEC_CONFIG_SIMPLE: if ((tmp = dvbfe_sec_std_sequence(fe, sec_config->sec.simple.lo_hi, sec_config->sec.simple.polarisation, sec_config->sec.simple.sat_pos)) < 0) return tmp; break; case DVBFE_SEC_CONFIG_ADVANCED: if ((tmp = dvbfe_sec_command(fe, sec_config->sec.advanced_cmd)) < 0) return tmp; break; } // frequency adjustment if (sec_config->lof) { memcpy(&localparams, params, sizeof(struct dvbfe_parameters)); localparams.frequency -= sec_config->lof; topass = &localparams; } else { topass = params; } // set the frontend! return dvbfe_set(fe, topass, timeout); }