libdvbv5: implement dvb_fe_dummy for logging
authorAndré Roth <neolynx@gmail.com>
Mon, 30 Dec 2013 12:48:39 +0000 (09:48 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 7 Jan 2014 13:54:58 +0000 (11:54 -0200)
The dvbv5 functions use the dvb_v5_fe_parms struct for logging.
This struct is normally obtained by opening a dvb device. For
situations where the opening of a dvb device is not desired,
the dvb_fe_dummy can be used.

Signed-off-by: André Roth <neolynx@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
lib/include/descriptors.h
lib/include/dvb-fe.h
lib/libdvbv5/descriptors.c
lib/libdvbv5/dvb-fe.c

index 2e614f0..35eab1c 100644 (file)
@@ -63,7 +63,13 @@ struct dvb_desc {
 } __attribute__((packed));
 
 void dvb_desc_default_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct dvb_desc *desc);
+#ifdef __cplusplus
+extern "C" {
+#endif
 void dvb_desc_default_print  (struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc);
+#ifdef __cplusplus
+}
+#endif
 
 #define dvb_desc_foreach( _desc, _tbl ) \
        for( struct dvb_desc *_desc = _tbl->descriptor; _desc; _desc = _desc->next ) \
index b0e2bf9..8cf2697 100644 (file)
@@ -119,6 +119,8 @@ struct dvb_v5_fe_parms {
 extern "C" {
 #endif
 
+struct dvb_v5_fe_parms *dvb_fe_dummy();
+
 struct dvb_v5_fe_parms *dvb_fe_open(int adapter, int frontend,
                                    unsigned verbose, unsigned use_legacy_call);
 struct dvb_v5_fe_parms *dvb_fe_open2(int adapter, int frontend,
index 5ce9241..eb32b47 100644 (file)
@@ -69,6 +69,8 @@ void dvb_desc_default_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, st
 
 void dvb_desc_default_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
+       if (!parms)
+               parms = dvb_fe_dummy();
        dvb_log("|                   %s (0x%02x)", dvb_descriptors[desc->type].name, desc->type);
        hexdump(parms, "|                       ", desc->data, desc->length);
 }
index cc32ec0..4672267 100644 (file)
@@ -35,6 +35,13 @@ static void dvb_v5_free(struct dvb_v5_fe_parms *parms)
        free(parms);
 }
 
+struct dvb_v5_fe_parms dummy_fe;
+struct dvb_v5_fe_parms *dvb_fe_dummy()
+{
+       dummy_fe.logfunc = dvb_default_log;
+       return &dummy_fe;
+}
+
 struct dvb_v5_fe_parms *dvb_fe_open(int adapter, int frontend, unsigned verbose,
                                    unsigned use_legacy_call)
 {