@@ -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;
@@ -22,13 +22,10 @@
#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 {
@@ -22,13 +22,10 @@
#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;
@@ -23,13 +23,10 @@
#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 {
@@ -22,13 +22,10 @@
#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 {
@@ -22,13 +22,10 @@
#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;
@@ -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;
@@ -22,13 +22,10 @@
#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;
@@ -22,12 +22,10 @@
#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;
@@ -22,13 +22,11 @@
#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;
@@ -22,13 +22,10 @@
#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;
@@ -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));
@@ -22,13 +22,10 @@
#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;
@@ -25,17 +25,14 @@
#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));
@@ -22,13 +22,10 @@
#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;
@@ -22,13 +22,10 @@
#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;
@@ -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));
@@ -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;
@@ -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 {
@@ -24,13 +24,10 @@
#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;
@@ -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;
@@ -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));
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> --- lib/include/libdvbv5/desc_atsc_service_location.h | 7 ++----- lib/include/libdvbv5/desc_ca.h | 7 ++----- lib/include/libdvbv5/desc_ca_identifier.h | 7 ++----- lib/include/libdvbv5/desc_cable_delivery.h | 7 ++----- lib/include/libdvbv5/desc_event_extended.h | 7 ++----- lib/include/libdvbv5/desc_event_short.h | 7 ++----- lib/include/libdvbv5/desc_extension.h | 7 ++----- lib/include/libdvbv5/desc_frequency_list.h | 7 ++----- lib/include/libdvbv5/desc_hierarchy.h | 6 ++---- lib/include/libdvbv5/desc_isdbt_delivery.h | 8 +++----- lib/include/libdvbv5/desc_language.h | 7 ++----- lib/include/libdvbv5/desc_logical_channel.h | 7 ++----- lib/include/libdvbv5/desc_network_name.h | 7 ++----- lib/include/libdvbv5/desc_partial_reception.h | 7 ++----- lib/include/libdvbv5/desc_sat.h | 7 ++----- lib/include/libdvbv5/desc_service.h | 7 ++----- lib/include/libdvbv5/desc_service_list.h | 7 ++----- lib/include/libdvbv5/desc_service_location.h | 6 ++---- lib/include/libdvbv5/desc_t2_delivery.h | 5 +++-- lib/include/libdvbv5/desc_terrestrial_delivery.h | 7 ++----- lib/include/libdvbv5/desc_ts_info.h | 7 ++----- lib/include/libdvbv5/descriptors.h | 9 ++++++--- 22 files changed, 50 insertions(+), 103 deletions(-)