From: Adam Sutton Date: Sat, 16 Jun 2012 20:04:55 +0000 (+0100) Subject: Expose DVB table API within the rest of the app (needed by new grabbers). X-Git-Tag: 3.0~15^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=01c619482f3ef08baea66157a5e65237c7d7e1df;p=thirdparty%2Ftvheadend.git Expose DVB table API within the rest of the app (needed by new grabbers). --- diff --git a/src/dvb/dvb.h b/src/dvb/dvb.h index 8fac10137..2cb5b9435 100644 --- a/src/dvb/dvb.h +++ b/src/dvb/dvb.h @@ -209,6 +209,46 @@ typedef struct th_dvb_adapter { } th_dvb_adapter_t; +/** + * DVB table + */ +typedef struct th_dvb_table { + /** + * Flags, must never be changed after creation. + * We inspect it without holding global_lock + */ + int tdt_flags; + + /** + * Cycle queue + * Tables that did not get a fd or filter in hardware will end up here + * waiting for any other table to be received so it can reuse that fd. + * Only linked if fd == -1 + */ + TAILQ_ENTRY(th_dvb_table) tdt_pending_link; + + /** + * File descriptor for filter + */ + int tdt_fd; + + LIST_ENTRY(th_dvb_table) tdt_link; + + char *tdt_name; + + void *tdt_opaque; + int (*tdt_callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len, + uint8_t tableid, void *opaque); + + + int tdt_count; + int tdt_pid; + + struct dmx_sct_filter_params *tdt_fparams; + + int tdt_id; + +} th_dvb_table_t; extern struct th_dvb_adapter_queue dvb_adapters; @@ -335,6 +375,17 @@ void dvb_table_add_default(th_dvb_mux_instance_t *tdmi); void dvb_table_flush_all(th_dvb_mux_instance_t *tdmi); +struct dmx_sct_filter_params *dvb_fparams_alloc(void); +void +tdt_add(th_dvb_mux_instance_t *tdmi, struct dmx_sct_filter_params *fparams, + int (*callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len, + uint8_t tableid, void *opaque), void *opaque, + const char *name, int flags, int pid, th_dvb_table_t *tdt); + +#define TDT_CRC 0x1 +#define TDT_QUICKREQ 0x2 +#define TDT_CA 0x4 + /** * Satellite configuration */ diff --git a/src/dvb/dvb_tables.c b/src/dvb/dvb_tables.c index f2e836531..03069044e 100644 --- a/src/dvb/dvb_tables.c +++ b/src/dvb/dvb_tables.c @@ -42,68 +42,19 @@ #include "notify.h" #include "cwc.h" -#define TDT_CRC 0x1 -#define TDT_QUICKREQ 0x2 -#define TDT_CA 0x4 - static void dvb_table_add_pmt(th_dvb_mux_instance_t *tdmi, int pmt_pid); static int tdt_id_tally; -/** - * - */ -typedef struct th_dvb_table { - /** - * Flags, must never be changed after creation. - * We inspect it without holding global_lock - */ - int tdt_flags; - - /** - * Cycle queue - * Tables that did not get a fd or filter in hardware will end up here - * waiting for any other table to be received so it can reuse that fd. - * Only linked if fd == -1 - */ - TAILQ_ENTRY(th_dvb_table) tdt_pending_link; - - /** - * File descriptor for filter - */ - int tdt_fd; - - LIST_ENTRY(th_dvb_table) tdt_link; - - char *tdt_name; - - void *tdt_opaque; - int (*tdt_callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len, - uint8_t tableid, void *opaque); - - - int tdt_count; - int tdt_pid; - - struct dmx_sct_filter_params *tdt_fparams; - - int tdt_id; - -} th_dvb_table_t; - - - - /** * Helper for preparing a section filter parameter struct */ -static struct dmx_sct_filter_params * +struct dmx_sct_filter_params * dvb_fparams_alloc(void) { return calloc(1, sizeof(struct dmx_sct_filter_params)); } - /** * */ @@ -323,7 +274,7 @@ dvb_tdt_destroy(th_dvb_adapter_t *tda, th_dvb_mux_instance_t *tdmi, /** * Add a new DVB table */ -static void +void tdt_add(th_dvb_mux_instance_t *tdmi, struct dmx_sct_filter_params *fparams, int (*callback)(th_dvb_mux_instance_t *tdmi, uint8_t *buf, int len, uint8_t tableid, void *opaque), void *opaque,