Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: refactoring
If you keep going on this line of thought, you end up with:
-----------
struct dvb_frontend_api {
struct dvb_frontend_info info;
struct dvb_adapter *dvb_adapter;
void* data;
int (*fe_init)(void* data);
int (*fe_sleep)(void* data);
int (*fe_get_tune_settings)(void* data, struct
dvb_frontend_tune_settings* settings);
int (*fe_set_frontend)(void* data, struct dvb_frontend_parameters*
params);
int (*fe_get_frontend)(void* data, struct dvb_frontend_parameters*
params);
int (*fe_read_status)(void* data, fe_status_t* status);
int (*fe_read_ber)(void* data, __u32 ber);
int (*fe_read_signal_strength)(void* data, __u16 strength);
int (*fe_read_snr)(void* data, __u16 snr);
int (*fe_read_ucblocks)(void* data, __u32 ucblocks);
int (*fe_diseqc_reset_overload)(void* data);
int (*fe_diseqc_send_master_cmd)(void* data, struct
dvb_diseqc_master_cmd* cmd);
int (*fe_diseqc_slave_reply)(void* data, struct
dvb_diseqc_slave_reply* reply);
int (*fe_diseqc_send_burst)(void* data, fe_sec_mini_cmd_t minicmd);
int (*fe_set_tone)(void* data, fe_sec_tone_mode_t tone);
int (*fe_get_voltage)(void* data, fe_sec_voltage_t voltage);
int (*fe_enable_high_lnb_voltage)(void* data, int arg);
int (*fe_dishnetwork_send_legacy_command)(void* data, unsigned int
cmd);
void (*fe_notifier_callback)(void* data, fe_status_t s);
};
extern int
dvb_register_frontend(struct dvb_frontend_api* api,
struct module *module);
extern int
dvb_unregister_frontend(struct dvb_frontend_api* api);
-----------
Frontends just define a template dvb_frontend_api with pointers to their
functions. Card drivers simply memcpy this and adjust as necessary before
attaching the frontend. This also means card drivers are free to adjust the
dvb_frontend_info structure as necessary for their hardware - something which
I've had to add special support in for otherwise.
What is fe_enable_high_lnb_voltage() BTW?
Home |
Main Index |
Thread Index