1 #include <stdio.h> // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h> // sleep
8 #include "frescan_bwres.h"
9 #include "frescan_servers.h"
11 #define PUT_ERROR(s) {perror (s); exit (-1);}
16 extern int frescan_fna_network_bytes_to_budget
17 (const frsh_resource_id_t resource_id,
19 frsh_rel_time_t *budget);
24 frescan_init_params_t init_params;
26 frsh_contract_t contract_sc;
27 frescan_server_params_t server_params;
29 frsh_rel_time_t budget_min, budget_max, period_max, period_min;
31 init_params.net = NETWORK;
32 init_params.node = LOCAL_NODE;
33 init_params.tx_fp_max_prio = 10;
34 init_params.rx_num_of_channels = 10;
35 init_params.rx_channel_max_prio = NULL;
37 printf("Initializing FRESCAN\n");
38 ret = frescan_init(&init_params);
39 if (ret != 0) PUT_ERROR ("could not init FRESCAN");
41 printf("Initializing BWRES\n");
42 ret = frescan_bwres_init(NETWORK);
43 if (ret != 0) PUT_ERROR ("could not init BWRES");
45 printf("Create a contract with spare capacity\n");
47 ret = frsh_contract_init(&contract_sc);
48 if (ret != 0) PUT_ERROR ("could not init contract");
50 ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*1, &budget_min);
51 if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
53 ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*5, &budget_max);
54 if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
56 period_max = frsh_msec_to_rel_time(1); // 3,369 secs
57 period_min = period_max;
59 ret = frsh_contract_set_basic_params
63 FRSH_WT_INDETERMINATE,
65 if (ret != 0) PUT_ERROR ("could not set basic params");
67 ret = frsh_contract_set_preemption_level
68 (&contract_sc, FRESCAN_BWRES_NEG_MSG_PRIO + 1);
69 if (ret != 0) PUT_ERROR ("could not set preemption level");
71 ret = frsh_contract_set_reclamation_params(&contract_sc,
79 if (ret != 0) PUT_ERROR ("could not set reclamation params");
81 printf("Negotiating a contract\n");
82 ret = frescan_bwres_negotiate(NETWORK, &contract_sc, &ss_sc, &accepted);
83 if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
86 printf("The contract was accepted, ss_sc:%u\n", ss_sc);
87 ret = frescan_servers_get_data(NETWORK, &server_params, ss_sc);
88 if (ret != 0) PUT_ERROR ("could not get servers data");
90 printf("B:%u, T=(%u,%u), P:%u\n",
92 server_params.period.tv_sec,
93 server_params.period.tv_nsec,
96 printf("The contract was not accepted\n");