]> rtime.felk.cvut.cz Git - frescor/frsh.git/blob - resources/item/tests/test_item.c
ITEM: Working demo
[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 4
10 //#define N 3
11
12 int contract_deadline_sec[N] = { 4,4,4,4 };
13 //int contract_deadline_sec[N] = {2,2,2};
14 //int contract_deadline_sec[N] = { 8*SLOT_TIME, 8*SLOT_TIME, 4*SLOT_TIME }; //ITEM ADD
15 int contract_nodes[N] = { 0x04, 0x05, 0x02 ,0x03};
16 //int contract_nodes[N] = { 0x02,0x03,0x04};
17
18 int main(int argc, char *argv[])
19 {
20         int ret;
21         frsh_contract_t contract[N];
22         frsh_vres_id_t vres[N];
23         int i;
24         
25         
26         ret = frsh_init();
27         if (ret) PERROR_AND_EXIT(ret, "frsh_init");
28
29         /* Negotiate N contracts */
30         for (i=0; i<N; i++) {
31                 frsh_rel_time_t deadline;
32                 frsh_signal_info_t si;
33                 fres_block_item_nodes *nodes;
34                 ret = frsh_contract_init(&contract[i]);
35                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_init");
36
37                 /* Set resource */
38                 ret = frsh_contract_set_resource_and_label(
39                         &contract[i], FRSH_RT_NETWORK, FRSH_NETPF_ITEM, NULL);
40                 if (ret) PERROR_AND_EXIT(ret, "Cannot set resource\n");
41
42                 /* Set nodes we want to receive data from */
43                 nodes = malloc(sizeof(*nodes));
44                 if (!nodes) PERROR_AND_EXIT(errno, "malloc");
45                 //nodes->mask = contract_nodes[i];
46                 
47                 nodes->mask =1;
48                 nodes->mask = nodes->mask << (contract_nodes[i]);
49                         
50                 
51                         ret = fres_contract_add_item_nodes(contract[i], nodes);
52                 if (ret) PERROR_AND_EXIT(ret, "Cannot add item_nodes block\n");
53
54                 /* Set deadline */
55                 deadline = fosa_msec_to_rel_time(contract_deadline_sec[i]*1000);
56                 ret = frsh_contract_set_timing_reqs(&contract[i],
57                                                     false, &deadline,
58                                             0, si, 0, si);
59                 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
60
61                 /* Negotiate the contract */
62                 ret = frsh_contract_negotiate(&contract[i], &vres[i]);
63                 //if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
64                 if (ret) printf(" \n frsh_contract_negotiate - NOT ACCEPTED \n");
65         }
66         printf("Contracts negotiated\n");
67
68         for (i=0; i<30; i++) {
69                 //int j;
70                 //printf("Reading data\n");
71                 //for (j=0; j<N; j++) {
72                         unsigned char *data;
73                         int len;
74                 //                      int k;
75                         ret = fra_item_receive(vres[1], &data);
76                         if (ret == -1) PERROR_AND_EXIT(errno, "frs_item_receive");
77                         len = ret;
78                         
79                         /*  Do something with the received data */
80                                 
81                         /*      printf("JOP 89 : %i  - ",len);
82                         for (k = 0; k < len-1; k++)
83                         {
84                                 printf("%02x ", data[k]);
85                                 if (k%4 == 3)
86                                         printf(" | ");
87                         }
88                         putchar('\n');*/
89                         
90                         int l;
91                         int m;
92                         for (l=1; l < len/4; l++)
93                         {
94                                 for(m=1; m < 20; m++)
95                                 {
96                                         if (data[4*l-1] > 6*m) putchar('*');
97                                         else putchar(' ');
98                                 }
99                                 printf(" | ");
100                         }                       
101                         putchar('\n');
102                         
103                         forb_free(data);
104                 //}
105                 sleep(1);
106         } 
107
108         for (i=0; i<N; i++) { 
109                 frsh_contract_cancel(vres[i]); 
110         }
111         return 0;
112 }