{
htsmsg_t *m,*streams, *c, *sourceinfo;
const char *type;
+ tvh_uuid_t hex;
int i;
const source_info_t *si;
htsmsg_add_msg(m, "streams", streams);
si = &ss->ss_si;
+ if(!uuid_empty(&si->si_adapter_uuid)) {
+ uuid_bin2hex(&si->si_adapter_uuid, &hex);
+ htsmsg_add_str(sourceinfo, "adapter_uuid", hex.hex);
+ }
+ if(!uuid_empty(&si->si_mux_uuid)) {
+ uuid_bin2hex(&si->si_mux_uuid, &hex);
+ htsmsg_add_str(sourceinfo, "mux_uuid", hex.hex);
+ }
+ if(!uuid_empty(&si->si_network_uuid)) {
+ uuid_bin2hex(&si->si_network_uuid, &hex);
+ htsmsg_add_str(sourceinfo, "network_uuid", hex.hex);
+ }
if(si->si_adapter ) htsmsg_add_str(sourceinfo, "adapter", si->si_adapter );
if(si->si_mux ) htsmsg_add_str(sourceinfo, "mux" , si->si_mux );
if(si->si_network ) htsmsg_add_str(sourceinfo, "network", si->si_network );
memset(si, 0, sizeof(struct source_info));
si->si_type = S_MPEG_TS;
+ uuid_copy(&si->si_network_uuid, &m->mm_network->mn_id.in_uuid);
+ uuid_copy(&si->si_mux_uuid, &m->mm_id.in_uuid);
+
if(m->mm_network->mn_network_name != NULL)
si->si_network = strdup(m->mm_network->mn_network_name);
if(s->s_dvb_active_input) {
mpegts_input_t *mi = s->s_dvb_active_input;
+ uuid_copy(&si->si_adapter_uuid, &mi->ti_id.in_uuid);
mi->mi_display_name(mi, buf, sizeof(buf));
si->si_adapter = strdup(buf);
}
void
service_source_info_copy(source_info_t *dst, const source_info_t *src)
{
-#define COPY(x) dst->si_##x = src->si_##x ? strdup(src->si_##x) : NULL
+ *dst = *src;
+#define COPY(x) if (src->si_##x) dst->si_##x = strdup(src->si_##x)
COPY(adapter);
COPY(network);
COPY(mux);
* Source information
*/
typedef struct source_info {
+ tvh_uuid_t si_adapter_uuid;
+ tvh_uuid_t si_network_uuid;
+ tvh_uuid_t si_mux_uuid;
char *si_adapter;
char *si_network;
char *si_satpos;
#define RANDOM_PATH "/dev/urandom"
+uint8_t ___uuid_empty[UUID_BIN_SIZE] = { 0 };
+
static int fd = -1;
/* **************************************************************************
#define UUID_BIN_SIZE (16)
#define UUID_HEX_SIZE (33) // inc NUL
+extern uint8_t ___uuid_empty[UUID_BIN_SIZE];
+
/* Structure to hold UUID */
typedef struct uuid {
union {
return memcmp(a->bin, b->bin, UUID_BIN_SIZE);
}
+/**
+ * Empty
+ */
+static inline int uuid_empty ( const tvh_uuid_t *a )
+{
+ return memcmp(a->bin, ___uuid_empty, UUID_BIN_SIZE) == 0;
+}
+
/**
* Valid hex uuid
*/