1 #include <stdio.h> // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h> // sleep
7 #include "frescan_servers.h"
8 #include "frescan_debug.h"
11 #define LOG_DEVICE LOG_ETHERNET
13 #define NUM_MSG_BYTES 512 // 8 32 64 512 1488
14 #define ENABLE_DEBUG false
15 #define NUM_MEASURES 100
17 #define LOCAL_NODE 0 // 0 1
19 #include <misc/time_measurement_hwtime.h>
20 #include <misc/logger.h>
22 static const trace_point_id_t BEGIN = 0;
23 static const trace_point_id_t END = 1;
25 #define DISABLE_MEASURES
30 frescan_send_params_t send_params;
31 frescan_recv_params_t recv_params;
32 char msg[1500]; // big enough for all the messages
33 frescan_init_params_t init_params;
34 frescan_server_params_t server_params;
42 DEBUG(ENABLE_DEBUG, ">> Initializing FRESCAN (me:%u)\n", me);
44 init_params.net = NETWORK;
45 init_params.node = LOCAL_NODE;
46 init_params.tx_fp_max_prio = 10;
47 init_params.rx_num_of_channels = 5;
48 init_params.rx_channel_max_prio = NULL;
50 ret = frescan_init(&init_params);
51 if (ret != 0) ERROR ("could not init FRESCAN");
53 DEBUG(ENABLE_DEBUG, ">> Creating a Server\n");
55 server_params.values.budget = NUM_MSG_BYTES / 8;
56 server_params.values.period.tv_sec = 0;
57 server_params.values.period.tv_nsec = 500000000;
58 server_params.prio = 4;
60 ret = frescan_servers_create(NETWORK,
63 if (ret != 0) ERROR ("could not create server");
65 DEBUG(ENABLE_DEBUG, ">> Enter in loop for sending packets\n");
67 send_params.net = NETWORK;
68 send_params.channel = 0;
69 send_params.flags = FRESCAN_SS | FRESCAN_ASYNC;
70 send_params.to = (me == 0)? 1 : 0;
72 recv_params.net = NETWORK;
73 recv_params.channel = 0;
74 recv_params.flags = FRESCAN_SYNC;
77 DEBUG(ENABLE_DEBUG, ">> Init logger and timer measurements\n");
79 #ifndef DISABLE_MEASURES
80 ret = logger_init(LOG_DEVICE);
83 ret = time_measure_hwtime_init(BEGIN, "frescan_begin");
86 ret = time_measure_hwtime_init(END, "frescan_end");
89 DEBUG(ENABLE_DEBUG, ">> Enter in loop for send-recv packets\n");
91 for (i=0; i<NUM_MEASURES; i++) {
92 #ifndef DISABLE_MEASURES
93 time_measure_hwtime_set_timestamp(BEGIN);
95 ret = frescan_send(&send_params,
98 if (ret != 0) ERROR ("could not send message\n");
100 ret = frescan_recv(&recv_params,
106 if (ret != 0) ERROR ("could not receive message");
107 #ifndef DISABLE_MEASURES
108 time_measure_hwtime_set_timestamp(END);
110 DEBUG(ENABLE_DEBUG, ">> received %d bytes\n", recv_bytes);
113 #ifndef DISABLE_MEASURES
114 ret = time_measure_hwtime_write_membuffer(BEGIN);
117 ret = time_measure_hwtime_write_membuffer(END);
120 while (logger_manual_call() > 0);
123 DEBUG(ENABLE_DEBUG, ">> Enter in loop for recv-send packets\n");
126 ret = frescan_recv(&recv_params,
132 if (ret != 0) ERROR ("could not receive message");
134 ret = frescan_send(&send_params,
137 if (ret != 0) ERROR ("could not send message\n");