1 #include <stdio.h> // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h> // sleep
9 #include "frescan_bwres.h"
10 #include "frescan_servers.h"
12 #define PUT_ERROR(s) {perror (s); exit (-1);}
17 // #define ENABLE_LOGGING
19 #include <drivers/console_switcher.h>
20 #include <misc/logger.h>
22 #define LOG_DEVICE LOG_ETHERNET
25 extern int frescan_fna_network_bytes_to_budget
26 (const frsh_resource_id_t resource_id,
28 frsh_rel_time_t *budget);
33 frescan_init_params_t init_params;
35 frsh_contract_t contract;
36 frescan_server_params_t server_params;
38 frsh_rel_time_t budget_min, period_max;
41 ret = logger_init(LOG_DEVICE);
44 printf("Changing to membuffer console\n");
45 MEMBUFFER_CONSOLE_INIT();
48 init_params.net = NETWORK;
49 init_params.node = LOCAL_NODE;
50 init_params.tx_fp_max_prio = 10;
51 init_params.rx_num_of_channels = 10;
52 init_params.rx_channel_max_prio = NULL;
54 printf("Initializing FRESCAN\n");
55 ret = frescan_init(&init_params);
56 if (ret != 0) PUT_ERROR ("could not init FRESCAN");
58 printf("Initializing BWRES\n");
59 ret = frescan_bwres_init(NETWORK);
60 if (ret != 0) PUT_ERROR ("could not init BWRES");
63 ret = frsh_contract_init(&contract);
66 ret = frsh_network_bytes_to_budget(FRSH_NETWORK_ID_DEFAULT,
71 period_max.tv_sec = 1; period_max.tv_nsec = 0;
73 ret = frsh_contract_set_basic_params(&contract,
76 FRSH_WT_INDETERMINATE,
80 ret = frsh_contract_set_preemption_level(&contract, 5);
83 ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
84 if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
86 ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
87 if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
90 ret = frsh_contract_init(&contract);
91 if (ret != 0) PUT_ERROR ("could not init contract");
93 ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*1, &budget_min);
94 if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
96 period_max = frsh_msec_to_rel_time(2);
98 ret = frsh_contract_set_basic_params
102 FRSH_WT_INDETERMINATE,
104 if (ret != 0) PUT_ERROR ("could not set basic params");
106 ret = frsh_contract_set_preemption_level(&contract, 8);
107 if (ret != 0) PUT_ERROR ("could not set preemption level");
109 printf("Negotiating a contract\n");
110 ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
111 if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
114 printf("The contract was accepted, ss:%u\n", ss);
115 ret = frescan_servers_get_data(NETWORK, &server_params, ss);
116 if (ret != 0) PUT_ERROR ("could not get servers data");
118 printf("B:%u, T=(%u,%u), P:%u\n",
119 server_params.budget,
120 server_params.period.tv_sec,
121 server_params.period.tv_nsec,
124 printf("The contract was not accepted\n");
127 printf("MAIN DONE\n");
129 #ifdef ENABLE_LOGGING
130 while (logger_manual_call() > 0);