enum dvbfe_sec_config_type { DVBFE_SEC_CONFIG_NONE = 0, DVBFE_SEC_CONFIG_SIMPLE, DVBFE_SEC_CONFIG_ADVANCED, }; struct dvbfe_sec_config { uint32_t lof; /* frequency to subtract */ /** * The SEC command used depends on the type: * * NONE - no SEC commands will be issued. * * SIMPLE - the standard DISEQC back compatable sequence is used - * lo_hi+polarisation+sat_pos switch must be supplied. * * ADVANCED - an SEC string is supplied by the user describing the exact sequence * of operations to use. */ enum dvbfe_sec_config_type type; union { struct { enum dvbfe_diseqc_oscillator lo_hi; enum dvbfe_diseqc_polarisation polarisation; enum dvbfe_diseqc_switch sat_pos; } simple; /* DVBFE_SEC_CONFIG_SIMPLE */ char advanced_cmd[256]; /* DVBFE_SEC_CONFIG_ADVANCED */ } sec; }; /** * Helper function for tuning adapters with SEC support. This function will do * everything required, including frequency adjustment based on the parameters * in sec_config. * * Note: Since the SEC configuration structure can be set to disable any SEC * operations, this function can be reused for ALL DVB style devices (just * set LOF=0,type=DVBFE_SEC_CONFIG_NONE for devices which do not require * SEC control). * * @param fe Frontend concerned. * @param sec_config SEC configuration structure. * @param params Tuning parameters. * @param timeout <0 => wait forever for lock. 0=>return immediately, >0=> * number of milliseconds to wait for a lock. * @return 0 on locked (or if timeout==0 and everything else worked), or * nonzero on failure (including no lock). */ extern int dvbfe_sec_set(struct dvbfe_handle *fe, struct dvbfe_sec_config *sec_config, struct dvbfe_parameters *params, int timeout);