From 01c619482f3ef08baea66157a5e65237c7d7e1df Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Sat, 16 Jun 2012 21:04:55 +0100 Subject: [PATCH] Expose DVB table API within the rest of the app (needed by new grabbers). --- src/dvb/dvb.h | 51 ++++++++++++++++++++++++++++++++++++++++++ src/dvb/dvb_tables.c | 53 ++------------------------------------------ 2 files changed, 53 insertions(+), 51 deletions(-) diff --git a/src/dvb/dvb.h b/src/dvb/dvb.h index 8fac1013..2cb5b943 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 f2e83653..03069044 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,