--- /dev/null
+#include <stdio.h> // perror
+#include <stdlib.h> // exit
+#include <unistd.h> // sleep
+
+#include "frsh.h"
+
+#include "frescan.h"
+#include "frescan_bwres.h"
+#include "frescan_servers.h"
+
+#define PUT_ERROR(s) {perror (s); exit (-1);}
+
+#define NETWORK 0
+#define LOCAL_NODE 1
+
+// #define ENABLE_LOGGING
+#ifdef ENABLE_LOGGING
+#include <drivers/console_switcher.h>
+#include <misc/logger.h>
+#include <assert.h>
+#define LOG_DEVICE LOG_ETHERNET
+#endif
+
+extern int frescan_fna_network_bytes_to_budget
+ (const frsh_resource_id_t resource_id,
+ const size_t nbytes,
+ frsh_rel_time_t *budget);
+
+int main ()
+{
+ int ret;
+ frescan_init_params_t init_params;
+ frescan_ss_t ss;
+ frsh_contract_t contract;
+ frescan_server_params_t server_params;
+ bool accepted;
+ frsh_rel_time_t budget_min, period_max;
+
+#ifdef ENABLE_LOGGING
+ ret = logger_init(LOG_DEVICE);
+ assert(ret == 0);
+
+ printf("Changing to membuffer console\n");
+ MEMBUFFER_CONSOLE_INIT();
+#endif
+
+ init_params.net = NETWORK;
+ init_params.node = LOCAL_NODE;
+ init_params.tx_fp_max_prio = 10;
+ init_params.rx_num_of_channels = 10;
+ init_params.rx_channel_max_prio = NULL;
+
+ printf("Initializing FRESCAN\n");
+ ret = frescan_init(&init_params);
+ if (ret != 0) PUT_ERROR ("could not init FRESCAN");
+
+ printf("Initializing BWRES\n");
+ ret = frescan_bwres_init(NETWORK);
+ if (ret != 0) PUT_ERROR ("could not init BWRES");
+
+ ret = frsh_contract_init(&contract);
+ if (ret != 0) PUT_ERROR ("could not init contract");
+
+ ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*5, &budget_min);
+ if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+ period_max = frsh_msec_to_rel_time(1);
+
+ ret = frsh_contract_set_basic_params
+ (&contract,
+ &budget_min,
+ &period_max,
+ FRSH_WT_INDETERMINATE,
+ FRSH_CT_REGULAR);
+ if (ret != 0) PUT_ERROR ("could not set basic params");
+
+ ret = frsh_contract_set_preemption_level(&contract, 6);
+ if (ret != 0) PUT_ERROR ("could not set preemption level");
+
+ printf("Negotiating a contract\n");
+ ret = frescan_bwres_negotiate(NETWORK, &contract, &ss, &accepted);
+ if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
+
+ if (accepted) {
+ printf("The contract was accepted, ss:%u\n", ss);
+ ret = frescan_servers_get_data(NETWORK, &server_params, ss);
+ if (ret != 0) PUT_ERROR ("could not get servers data");
+
+ printf("B:%u, T=(%u,%u), P:%u\n",
+ server_params.budget,
+ server_params.period.tv_sec,
+ server_params.period.tv_nsec,
+ server_params.prio);
+ } else {
+ printf("The contract was not accepted\n");
+ }
+
+ printf("MAIN DONE\n");
+
+#ifdef ENABLE_LOGGING
+ while (logger_manual_call() > 0);
+#endif
+
+ while (1) sleep(1);
+ return 0;
+}
+
+
--- /dev/null
+#include <stdio.h> // perror
+#include <stdlib.h> // exit
+#include <unistd.h> // sleep
+
+#include "frsh.h"
+
+#include "frescan.h"
+#include "frescan_bwres.h"
+#include "frescan_servers.h"
+
+#define PUT_ERROR(s) {perror (s); exit (-1);}
+
+#define NETWORK 0
+#define LOCAL_NODE 1
+
+extern int frescan_fna_network_bytes_to_budget
+ (const frsh_resource_id_t resource_id,
+ const size_t nbytes,
+ frsh_rel_time_t *budget);
+
+int main ()
+{
+ int ret;
+ frescan_init_params_t init_params;
+ frescan_ss_t ss_sc;
+ frsh_contract_t contract_sc;
+ frescan_server_params_t server_params;
+ bool accepted;
+ frsh_rel_time_t budget_min, budget_max, period_max, period_min;
+
+ init_params.net = NETWORK;
+ init_params.node = LOCAL_NODE;
+ init_params.tx_fp_max_prio = 10;
+ init_params.rx_num_of_channels = 10;
+ init_params.rx_channel_max_prio = NULL;
+
+ printf("Initializing FRESCAN\n");
+ ret = frescan_init(&init_params);
+ if (ret != 0) PUT_ERROR ("could not init FRESCAN");
+
+ printf("Initializing BWRES\n");
+ ret = frescan_bwres_init(NETWORK);
+ if (ret != 0) PUT_ERROR ("could not init BWRES");
+
+ printf("Create a contract with spare capacity\n");
+
+ ret = frsh_contract_init(&contract_sc);
+ if (ret != 0) PUT_ERROR ("could not init contract");
+
+ ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*1, &budget_min);
+ if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+ ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*5, &budget_max);
+ if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+ period_max = frsh_msec_to_rel_time(1); // 3,369 secs
+ period_min = period_max;
+
+ ret = frsh_contract_set_basic_params
+ (&contract_sc,
+ &budget_min,
+ &period_max,
+ FRSH_WT_INDETERMINATE,
+ FRSH_CT_REGULAR);
+ if (ret != 0) PUT_ERROR ("could not set basic params");
+
+ ret = frsh_contract_set_preemption_level
+ (&contract_sc, FRESCAN_BWRES_NEG_MSG_PRIO + 1);
+ if (ret != 0) PUT_ERROR ("could not set preemption level");
+
+ ret = frsh_contract_set_reclamation_params(&contract_sc,
+ 0,
+ &budget_max,
+ &period_min,
+ FRSH_GR_CONTINUOUS,
+ NULL,
+ 1,
+ 1);
+ if (ret != 0) PUT_ERROR ("could not set reclamation params");
+
+ printf("Negotiating a contract\n");
+ ret = frescan_bwres_negotiate(NETWORK, &contract_sc, &ss_sc, &accepted);
+ if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
+
+ if (accepted) {
+ printf("The contract was accepted, ss_sc:%u\n", ss_sc);
+ ret = frescan_servers_get_data(NETWORK, &server_params, ss_sc);
+ if (ret != 0) PUT_ERROR ("could not get servers data");
+
+ printf("B:%u, T=(%u,%u), P:%u\n",
+ server_params.budget,
+ server_params.period.tv_sec,
+ server_params.period.tv_nsec,
+ server_params.prio);
+ } else {
+ printf("The contract was not accepted\n");
+ }
+
+ while (1) sleep(1);
+
+ return 0;
+}
+
+
--- /dev/null
+#include <stdio.h> // perror
+#include <stdlib.h> // exit
+#include <unistd.h> // sleep
+
+#include "frsh.h"
+
+#include "frescan.h"
+#include "frescan_bwres.h"
+#include "frescan_servers.h"
+
+#define PUT_ERROR(s) {perror (s); exit (-1);}
+
+#define NETWORK 0
+#define LOCAL_NODE 1
+
+extern int frescan_fna_network_bytes_to_budget
+ (const frsh_resource_id_t resource_id,
+ const size_t nbytes,
+ frsh_rel_time_t *budget);
+
+int main ()
+{
+ int ret;
+ frescan_init_params_t init_params;
+ frescan_ss_t ss_sc, ss_no_sc;
+ frsh_contract_t contract_sc, contract_no_sc;
+ frescan_server_params_t server_params;
+ bool accepted;
+ frsh_rel_time_t budget_min, budget_max, period_max, period_min;
+
+ init_params.net = NETWORK;
+ init_params.node = LOCAL_NODE;
+ init_params.tx_fp_max_prio = 10;
+ init_params.rx_num_of_channels = 10;
+ init_params.rx_channel_max_prio = NULL;
+
+ printf("Initializing FRESCAN\n");
+ ret = frescan_init(&init_params);
+ if (ret != 0) PUT_ERROR ("could not init FRESCAN");
+
+ printf("Initializing BWRES\n");
+ ret = frescan_bwres_init(NETWORK);
+ if (ret != 0) PUT_ERROR ("could not init BWRES");
+
+ printf("Create a contract with spare capacity\n");
+
+ ret = frsh_contract_init(&contract_sc);
+ if (ret != 0) PUT_ERROR ("could not init contract");
+
+ ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*1, &budget_min);
+ if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+ ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*5, &budget_max);
+ if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+ period_max = frsh_msec_to_rel_time(1); // 3,369 secs
+ period_min = period_max;
+
+ ret = frsh_contract_set_basic_params
+ (&contract_sc,
+ &budget_min,
+ &period_max,
+ FRSH_WT_INDETERMINATE,
+ FRSH_CT_REGULAR);
+ if (ret != 0) PUT_ERROR ("could not set basic params");
+
+ ret = frsh_contract_set_preemption_level
+ (&contract_sc, FRESCAN_BWRES_NEG_MSG_PRIO + 1);
+ if (ret != 0) PUT_ERROR ("could not set preemption level");
+
+ ret = frsh_contract_set_reclamation_params(&contract_sc,
+ 0,
+ &budget_max,
+ &period_min,
+ FRSH_GR_CONTINUOUS,
+ NULL,
+ 1,
+ 1);
+ if (ret != 0) PUT_ERROR ("could not set reclamation params");
+
+ printf("Negotiating a contract\n");
+ ret = frescan_bwres_negotiate(NETWORK, &contract_sc, &ss_sc, &accepted);
+ if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
+
+ if (accepted) {
+ printf("The contract was accepted, ss_sc:%u\n", ss_sc);
+ ret = frescan_servers_get_data(NETWORK, &server_params, ss_sc);
+ if (ret != 0) PUT_ERROR ("could not get servers data");
+
+ printf("B:%u, T=(%u,%u), P:%u\n",
+ server_params.budget,
+ server_params.period.tv_sec,
+ server_params.period.tv_nsec,
+ server_params.prio);
+ } else {
+ printf("The contract was not accepted\n");
+ }
+
+ printf("Create a contract without spare capacity\n");
+
+ ret = frsh_contract_init(&contract_no_sc);
+ if (ret != 0) PUT_ERROR ("could not init contract");
+
+ ret = frescan_fna_network_bytes_to_budget (NETWORK, 8*2, &budget_min);
+ if (ret != 0) PUT_ERROR ("could not transform bytes to budget");
+
+ ret = frsh_contract_set_basic_params
+ (&contract_no_sc,
+ &budget_min,
+ &period_max,
+ FRSH_WT_INDETERMINATE,
+ FRSH_CT_REGULAR);
+ if (ret != 0) PUT_ERROR ("could not set basic params");
+
+ ret = frsh_contract_set_preemption_level
+ (&contract_no_sc, FRESCAN_BWRES_NEG_MSG_PRIO + 2);
+ if (ret != 0) PUT_ERROR ("could not set preemption level");
+
+ printf("Negotiating non sc contract\n");
+ ret = frescan_bwres_negotiate(NETWORK, &contract_no_sc,
+ &ss_no_sc, &accepted);
+ if (ret != 0) PUT_ERROR ("could not negotiate succesfully");
+
+ if (accepted) {
+ printf("The contract was accepted, ss_no_sc:%u\n", ss_no_sc);
+ ret = frescan_servers_get_data(NETWORK,
+ &server_params, ss_no_sc);
+ if (ret != 0) PUT_ERROR ("could not get servers data");
+
+ printf("B:%u, T=(%u,%u), P:%u\n",
+ server_params.budget,
+ server_params.period.tv_sec,
+ server_params.period.tv_nsec,
+ server_params.prio);
+ } else {
+ printf("The contract was not accepted\n");
+ }
+
+ printf("Get params from sc vres\n");
+
+ ret = frescan_servers_get_data(NETWORK,
+ &server_params, ss_sc);
+ if (ret != 0) PUT_ERROR ("could not get servers data");
+
+ printf("B:%u, T=(%u,%u), P:%u\n",
+ server_params.budget,
+ server_params.period.tv_sec,
+ server_params.period.tv_nsec,
+ server_params.prio);
+
+ printf("MAIN DONE\n");
+ while (1) sleep(1);
+
+ return 0;
+}
+
+