]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - resources/item/tests/test_item.c
Item update
[frescor/frsh.git] / resources / item / tests / test_item.c
1 #include <frsh.h>
2 #include <error.h>
3 #include <item.h>
4 #include <fres_contract.h>
5
6 //ITEM ADD
7 //#include "FWSN.h"
8
9 #define N 3
10
11 int contract_deadline_sec[N] = { 8, 8, 4 };
12 //int contract_deadline_sec[N] = { 8*SLOT_TIME, 8*SLOT_TIME, 4*SLOT_TIME }; //ITEM ADD
13 int contract_nodes[N] = { 0x01, 0x03, 0x02 };
14
15 int main(int argc, char *argv[])
16 {
17         int ret;
18         frsh_contract_t contract[N];
19         frsh_vres_id_t vres[N];
20         int i;
21
22         ret = frsh_init();
23         if (ret) PERROR_AND_EXIT(ret, "frsh_init");
24
25         /* Negotiate N contracts */
26         for (i=0; i<N; i++) {
27                 frsh_rel_time_t deadline;
28                 frsh_signal_info_t si;
29                 fres_block_item_nodes *nodes;
30                 ret = frsh_contract_init(&contract[i]);
31                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
32
33                 /* Set resource */
34                 ret = frsh_contract_set_resource_and_label(
35                         &contract[i], FRSH_RT_NETWORK, FRSH_NETPF_ITEM, NULL);
36                 if (ret) PERROR_AND_EXIT(ret, "Cannot set resource\n");
37
38                 /* Set nodes we want to receive data from */
39                 nodes = malloc(sizeof(*nodes));
40                 if (!nodes) PERROR_AND_EXIT(errno, "malloc");
41                 nodes->mask = contract_nodes[i];
42                 ret = fres_contract_add_item_nodes(contract[i], nodes);
43                 if (ret) PERROR_AND_EXIT(ret, "Cannot add item_nodes block\n");
44
45                 /* Set deadline */
46                 deadline = fosa_msec_to_rel_time(contract_deadline_sec[i]*1000);
47                 ret = frsh_contract_set_timing_reqs(&contract[i],
48                                                     false, &deadline,
49                                             0, si, 0, si);
50                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
51
52                 /* Negotiate the contract */
53                 ret = frsh_contract_negotiate(&contract[i], &vres[i]);
54                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
55         }
56         printf("Contracts negotiated\n");
57
58         for (i=0; i<10; i++) {
59                 int j;
60                 printf("Reading data\n");
61                 for (j=0; j<N; j++) {
62                         unsigned *data;
63                         ret = fra_item_receive(vres[j], &data);
64                         if (ret == -1) PERROR_AND_EXIT(errno, "frs_item_receive");
65                         
66                         /* TODO: Do something with the received data */
67
68                         forb_free(data);
69                 }
70                 sleep(1);
71         }
72
73 /*      for (i=0; i<N; i++) { */
74 /*              frsh_cancel_contract(vres[i]); */
75 /*      }        */
76         return 0;
77 }