summaryrefslogtreecommitdiff
path: root/mcast/client/tra_handler.c
blob: 8148a1f97cf542fb2d2495a01e5c539538a5d405 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/*
 * (c) BayCom GmbH, http://www.baycom.de, info@baycom.de
 *
 * See the COPYING file for copyright information and
 * how to reach the author.
 *
 */

#include "headers.h"

static tra_info_t tra_list;

static tra_t *tra_find_unique (tra_info_t *trl, char *uuid)
{
	int i;
	for (i = 0; i < trl->tra_num; i++) {
		if (!strcmp (trl->tra[i].uuid, uuid)) {
			return trl->tra + i;
		}
	}
	return NULL;
}

static int tra_add_unique (tra_info_t *trl, tra_t *tri)
{
	tra_t *trf=tra_find_unique (trl, tri->uuid);
	if (!trf) {
		trl->tra = (tra_t *) realloc (trl->tra, sizeof (tra_t) * (trl->tra_num + 1));
		if (!trl->tra) {
			err ("Cannot get memory for netceiver_info\n");
		}
		trf = trl->tra + trl->tra_num;
		trl->tra_num++;
	} 
	memcpy (trf, tri, sizeof (tra_t));
	return 1;
}

tra_info_t *tra_get_list(void)
{
	return &tra_list;
}

int handle_tra(tra_info_t *tra_info)
{
	int i;
	if(tra_info->tra_num) {
		for (i = 0; i < tra_info->tra_num; i++) {
			tra_add_unique (&tra_list, tra_info->tra+i);
		}
		memcpy(tra_list.cam, tra_info->cam, MAX_CAMS*sizeof(cam_info_t));
		free (tra_info->tra);
		return 1;
	}
	return 0;
}