libdvbv5: use DVB_DESC_HEADER macro in all descriptors
authorAndré Roth <neolynx@gmail.com>
Sun, 30 Mar 2014 16:21:12 +0000 (13:21 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Mon, 31 Mar 2014 19:54:11 +0000 (16:54 -0300)
the first fields of a descriptor need to be the
type, length and the next pointer. in order to
prevent changing these fields by accident,
provide them in a macro.

Signed-off-by: André Roth <neolynx@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
22 files changed:
lib/include/libdvbv5/desc_atsc_service_location.h
lib/include/libdvbv5/desc_ca.h
lib/include/libdvbv5/desc_ca_identifier.h
lib/include/libdvbv5/desc_cable_delivery.h
lib/include/libdvbv5/desc_event_extended.h
lib/include/libdvbv5/desc_event_short.h
lib/include/libdvbv5/desc_extension.h
lib/include/libdvbv5/desc_frequency_list.h
lib/include/libdvbv5/desc_hierarchy.h
lib/include/libdvbv5/desc_isdbt_delivery.h
lib/include/libdvbv5/desc_language.h
lib/include/libdvbv5/desc_logical_channel.h
lib/include/libdvbv5/desc_network_name.h
lib/include/libdvbv5/desc_partial_reception.h
lib/include/libdvbv5/desc_sat.h
lib/include/libdvbv5/desc_service.h
lib/include/libdvbv5/desc_service_list.h
lib/include/libdvbv5/desc_service_location.h
lib/include/libdvbv5/desc_t2_delivery.h
lib/include/libdvbv5/desc_terrestrial_delivery.h
lib/include/libdvbv5/desc_ts_info.h
lib/include/libdvbv5/descriptors.h

index 1ff2341..ebe11b7 100644 (file)
@@ -21,8 +21,7 @@
 #ifndef _ATSC_SERVICE_LOCATION_H
 #define _ATSC_SERVICE_LOCATION_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct atsc_desc_service_location_elementary {
        uint8_t stream_type;
@@ -37,9 +36,7 @@ struct atsc_desc_service_location_elementary {
 } __attribute__((packed));
 
 struct atsc_desc_service_location {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        struct atsc_desc_service_location_elementary *elementary;
 
index 12f4ff3..49d346b 100644 (file)
 #ifndef _CA_H
 #define _CA_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_ca {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint16_t ca_id;
        union {
index 18df191..1136a84 100644 (file)
 #ifndef _CA_IDENTIFIER_H
 #define _CA_IDENTIFIER_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_ca_identifier {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint8_t caid_count;
        uint16_t *caids;
index 7abe920..8f5355a 100644 (file)
 #ifndef _CABLE_DELIVERY_H
 #define _CABLE_DELIVERY_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_cable_delivery {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint32_t frequency;
        union {
index 286f91d..b15e551 100644 (file)
 #ifndef _DESC_EVENT_EXTENDED_H
 #define _DESC_EVENT_EXTENDED_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_event_extended {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        union {
                struct {
index b2c979a..836e1b6 100644 (file)
 #ifndef _DESC_EVENT_SHORT_H
 #define _DESC_EVENT_SHORT_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_event_short {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        unsigned char language[4];
        char *name;
index 5921cba..c19ec70 100644 (file)
@@ -21,8 +21,7 @@
 #ifndef _EXTENSION_DESC_H
 #define _EXTENSION_DESC_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_v5_fe_parms;
 
@@ -42,9 +41,7 @@ enum extension_descriptors {
 };
 
 struct dvb_extension_descriptor {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint8_t extension_code;
 
index a138e56..7278971 100644 (file)
 #ifndef _DESC_FREQUENCY_LIST_H
 #define _DESC_FREQUENCY_LIST_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_frequency_list {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint8_t frequencies;
        uint32_t *frequency;
index 30bf082..fe8e772 100644 (file)
 #ifndef _HIERARCHY_H
 #define _HIERARCHY_H
 
-#include <stdint.h>
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_hierarchy {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint8_t hierarchy_type:4;
        uint8_t reserved:4;
index 5bac178..ae23475 100644 (file)
 #ifndef _ISDBT_DELIVERY_H
 #define _ISDBT_DELIVERY_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct isdbt_desc_terrestrial_delivery_system {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
+
        uint16_t *frequency;
        unsigned num_freqs;
 
index 28738a3..0872bdd 100644 (file)
 #ifndef _DESC_LANGUAGE_H
 #define _DESC_LANGUAGE_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_language {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        unsigned char language[4];
        uint8_t audio_type;
index bbccb81..28a6ac4 100644 (file)
@@ -25,8 +25,7 @@
 #ifndef _LCN_DESC_H
 #define _LCN_DESC_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_logical_channel_number {
        uint16_t service_id;
@@ -41,9 +40,7 @@ struct dvb_desc_logical_channel_number {
 } __attribute__((packed));
 
 struct dvb_desc_logical_channel {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        struct dvb_desc_logical_channel_number *lcn;
 } __attribute__((packed));
index 1ddc86b..6b6dcbc 100644 (file)
 #ifndef _DESC_NETWORK_NAME_H
 #define _DESC_NETWORK_NAME_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_network_name {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        char *network_name;
        char *network_name_emph;
index c6c45f7..3f40e5f 100644 (file)
 #ifndef _PARTIAL_RECEPTION_H
 #define _PARTIAL_RECEPTION_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct isdb_partial_reception_service_id {
        uint16_t service_id;
 } __attribute__((packed));
 
 struct isdb_desc_partial_reception {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        struct isdb_partial_reception_service_id *partial_reception;
 } __attribute__((packed));
index cf6393f..391ab44 100644 (file)
 #ifndef _SAT_H
 #define _SAT_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_sat {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint32_t frequency;
        uint16_t orbit;
index eea27ae..57964d3 100644 (file)
 #ifndef _DESC_SERVICE_H
 #define _DESC_SERVICE_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_service {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint8_t service_type;
        char *name;
index bffce0e..33b9b67 100644 (file)
@@ -22,8 +22,7 @@
 #ifndef _DESC_SERVICE_LIST_H
 #define _DESC_SERVICE_LIST_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_service_list_table {
        uint16_t service_id;
@@ -31,9 +30,7 @@ struct dvb_desc_service_list_table {
 } __attribute__((packed));
 
 struct dvb_desc_service_list {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        //struct dvb_desc_service_list_table services[];
 } __attribute__((packed));
index 78490bd..958dd04 100644 (file)
@@ -21,7 +21,7 @@
 #ifndef _SERVICE_LOCATION_H
 #define _SERVICE_LOCATION_H
 
-#include <stdint.h>
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_service_location_element {
        uint8_t stream_type;
@@ -36,9 +36,7 @@ struct dvb_desc_service_location_element {
 } __attribute__((packed));
 
 struct dvb_desc_service_location {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        union {
                uint16_t bitfield;
index a51f897..ed0d7a3 100644 (file)
@@ -22,8 +22,7 @@
 #ifndef _T2_DELIVERY_H
 #define _T2_DELIVERY_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_t2_delivery_subcell {
        uint8_t cell_id_extension;
@@ -31,6 +30,8 @@ struct dvb_desc_t2_delivery_subcell {
 } __attribute__((packed));
 
 struct dvb_desc_t2_delivery {
+       /* extended descriptor */
+
        uint8_t plp_id;
        uint16_t system_id;
        union {
index b6f039d..592305a 100644 (file)
 #ifndef _TERRESTRIAL_DELIVERY_H
 #define _TERRESTRIAL_DELIVERY_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_terrestrial_delivery {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint32_t centre_frequency;
        uint8_t reserved_future_use1:2;
index 523aa04..60eed5d 100644 (file)
@@ -22,8 +22,7 @@
 #ifndef _TS_INFO_H
 #define _TS_INFO_H
 
-#include <stdint.h>
-#include <unistd.h> /* ssize_t */
+#include <libdvbv5/descriptors.h>
 
 struct dvb_desc_ts_info_transmission_type {
        uint8_t transmission_type_info;
@@ -31,9 +30,7 @@ struct dvb_desc_ts_info_transmission_type {
 } __attribute__((packed));
 
 struct dvb_desc_ts_info {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        char *ts_name, *ts_name_emph;
        struct dvb_desc_ts_info_transmission_type transmission_type;
index f4d9288..b869a14 100644 (file)
@@ -54,10 +54,13 @@ extern char *output_charset;
        b = ntohl(b); \
 } while (0)
 
+#define DVB_DESC_HEADER() \
+       uint8_t type; \
+       uint8_t length; \
+       struct dvb_desc *next
+
 struct dvb_desc {
-       uint8_t type;
-       uint8_t length;
-       struct dvb_desc *next;
+       DVB_DESC_HEADER();
 
        uint8_t data[];
 } __attribute__((packed));