4 #include <fres_contract.h>
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 };
15 int main(int argc, char *argv[])
18 frsh_contract_t contract[N];
19 frsh_vres_id_t vres[N];
23 if (ret) PERROR_AND_EXIT(ret, "frsh_init");
25 /* Negotiate N contracts */
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");
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");
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");
46 deadline = fosa_msec_to_rel_time(contract_deadline_sec[i]*1000);
47 ret = frsh_contract_set_timing_reqs(&contract[i],
50 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_set_timing_reqs");
52 /* Negotiate the contract */
53 ret = frsh_contract_negotiate(&contract[i], &vres[i]);
54 if (ret) PERROR_AND_EXIT(ret, "frsh_contract_negotiate");
56 printf("Contracts negotiated\n");
58 for (i=0; i<10; i++) {
60 printf("Reading data\n");
63 ret = fra_item_receive(vres[j], &data);
64 if (ret == -1) PERROR_AND_EXIT(errno, "frs_item_receive");
66 /* TODO: Do something with the received data */
73 /* for (i=0; i<N; i++) { */
74 /* frsh_cancel_contract(vres[i]); */