libdvbv5: add support for mgt.h
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 11 Sep 2014 22:35:56 +0000 (19:35 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Thu, 11 Sep 2014 22:35:56 +0000 (19:35 -0300)
With that, all tables are documented via doxygen.

We're still missing documentation for the desc_*.h headers.

Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
doxygen_libdvbv5.cfg
lib/include/libdvbv5/mgt.h

index 5545082..b0e0448 100644 (file)
@@ -757,6 +757,7 @@ INPUT                  = $(SRCDIR)/doc/libdvbv5-index.doc \
                         $(SRCDIR)/lib/include/libdvbv5/atsc_eit.h \
                         $(SRCDIR)/lib/include/libdvbv5/cat.h \
                         $(SRCDIR)/lib/include/libdvbv5/eit.h \
+                        $(SRCDIR)/lib/include/libdvbv5/mgt.h \
                         $(SRCDIR)/lib/include/libdvbv5/nit.h \
                         $(SRCDIR)/lib/include/libdvbv5/pat.h \
                         $(SRCDIR)/lib/include/libdvbv5/pmt.h \
index e928868..9780515 100644 (file)
  *
  */
 
+/**
+ * @file mgt.h
+ * @brief Provides the table parser for the ATSC MGT (Master Guide Table)
+ * @copyright GNU General Public License version 2 (GPLv2)
+ * @author Andre Roth
+ *
+ * @par Relevant specs
+ * The table described herein is defined at:
+ * - ATSC A/65:2009
+ *
+ * @see
+ * http://www.etherguidesystems.com/help/sdos/atsc/syntax/tablesections/MGT.aspx
+ *
+ * @par Bug Report
+ * Please submit bug reports and patches to linux-media@vger.kernel.org
+ */
+
 #ifndef _MGT_H
 #define _MGT_H
 
 
 #include <libdvbv5/atsc_header.h>
 
+/**
+ * @def ATSC_TABLE_MGT
+ *     @brief ATSC MGT table ID
+ */
 #define ATSC_TABLE_MGT 0xC7
 
+/**
+ * @struct atsc_table_mgt_table
+ * @brief ATSC tables descrition at MGT table
+ *
+ * @param type         table type
+ * @param pid          table type pid
+ * @param type_version type type version number
+ * @param size         number of bytes for the table entry
+ * @param desc_length  table type descriptors length
+ * @param descriptor   pointer to struct dvb_desc
+ * @param next         pointer to struct atsc_table_mgt_table
+ *
+ * This structure is used to store the original VCT channel table,
+ * converting the integer fields to the CPU endianness.
+ *
+ * The undocumented parameters are used only internally by the API and/or
+ * are fields that are reserved. They shouldn't be used, as they may change
+ * on future API releases.
+ *
+ * Everything after atsc_table_mgt_table::descriptor (including it) won't
+ * be bit-mapped * to the data parsed from the MPEG TS. So, metadata are
+ * added there.
+ */
 struct atsc_table_mgt_table {
        uint16_t type;
        union {
@@ -51,6 +95,27 @@ struct atsc_table_mgt_table {
        struct atsc_table_mgt_table *next;
 } __attribute__((packed));
 
+/**
+ * @struct atsc_table_mgt
+ * @brief ATSC MGT table
+ *
+ * @param header               struct dvb_table_header content
+ * @param protocol_version     protocol version
+ * @param tables               tables_defined Number of tables defined
+ * @param table                        pointer to struct atsc_table_mgt_table
+ * @param descriptor           pointer to struct dvb_desc
+ *
+ * This structure is used to store the original MGT channel table,
+ * converting the integer fields to the CPU endianness.
+ *
+ * The undocumented parameters are used only internally by the API and/or
+ * are fields that are reserved. They shouldn't be used, as they may change
+ * on future API releases.
+ *
+ * Everything after atsc_table_mgt::table (including it) won't
+ * be bit-mapped * to the data parsed from the MPEG TS. So, metadata are
+ * added there.
+ */
 struct atsc_table_mgt {
        struct dvb_table_header header;
        uint8_t  protocol_version;
@@ -59,8 +124,14 @@ struct atsc_table_mgt {
        struct dvb_desc *descriptor;
 } __attribute__((packed));
 
-#define atsc_mgt_table_foreach( _tran, _mgt ) \
-  for( struct atsc_table_mgt_table *_tran = _mgt->table; _tran; _tran = _tran->next ) \
+/**
+ * @brief Macro used to find a table inside a MGT table
+ *
+ * @param _table       channel to seek
+ * @param _mgt         pointer to struct atsc_table_mgt_table
+ */
+#define atsc_mgt_table_foreach( _table, _mgt ) \
+  for( struct atsc_table_mgt_table *_table = _mgt->table; _table; _table = _table->next ) \
 
 struct dvb_v5_fe_parms;
 
@@ -68,9 +139,39 @@ struct dvb_v5_fe_parms;
 extern "C" {
 #endif
 
-ssize_t atsc_table_mgt_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct atsc_table_mgt **table);
-void atsc_table_mgt_free(struct atsc_table_mgt *mgt);
-void atsc_table_mgt_print(struct dvb_v5_fe_parms *parms, struct atsc_table_mgt *mgt);
+/**
+ * @brief Initializes and parses MGT table
+ *
+ * @param parms        struct dvb_v5_fe_parms pointer to the opened device
+ * @param buf buffer containing the MGT raw data
+ * @param buflen length of the buffer
+ * @param table pointer to struct atsc_table_mgt to be allocated and filled
+ *
+ * This function allocates an ATSC MGT table and fills the fields inside
+ * the struct. It also makes sure that all fields will follow the CPU
+ * endianness. Due to that, the content of the buffer may change.
+ *
+ * @return On success, it returns the size of the allocated struct.
+ *        A negative value indicates an error.
+ */
+ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
+                           ssize_t buflen, struct atsc_table_mgt **table);
+
+/**
+ * @brief Frees all data allocated by the MGT table parser
+ *
+ * @param table pointer to struct atsc_table_mgt to be freed
+ */
+void atsc_table_mgt_free(struct atsc_table_mgt *table);
+
+/**
+ * @brief Prints the content of the MGT table
+ *
+ * @param parms        struct dvb_v5_fe_parms pointer to the opened device
+ * @param table pointe to struct atsc_table_mgt
+ */
+void atsc_table_mgt_print(struct dvb_v5_fe_parms *parms,
+                         struct atsc_table_mgt *table);
 
 #ifdef __cplusplus
 }