1 #include <stdio.h> // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h> // sleep
7 #include "frescan_servers.h"
9 #define ERROR(s) {perror (s); exit (-1);}
11 #define LOG_DEVICE LOG_ETHERNET
15 #include <misc/time_measurement_hwtime.h>
16 #include <misc/logger.h>
18 static const trace_point_id_t BEGIN = 0;
19 static const trace_point_id_t END = 1;
24 frescan_send_params_t send_params;
25 frescan_recv_params_t recv_params;
28 frescan_init_params_t init_params;
29 frescan_server_params_t server_params;
37 printf(">> Initializing FRESCAN (me:%u)\n", me);
39 init_params.net = NETWORK;
40 init_params.node = LOCAL_NODE;
41 init_params.tx_fp_max_prio = 10;
42 init_params.rx_num_of_channels = 5;
43 init_params.rx_channel_max_prio = NULL;
45 ret = frescan_init(&init_params);
46 if (ret != 0) ERROR ("could not init FRESCAN");
48 printf(">> Creating a Server\n");
50 server_params.values.budget = 3;
51 server_params.values.period.tv_sec = 3;
52 server_params.values.period.tv_nsec = 0;
53 server_params.prio = 4;
55 ret = frescan_servers_create(NETWORK,
58 if (ret != 0) ERROR ("could not create server");
60 printf(">> Enter in loop for sending packets\n");
62 send_params.net = NETWORK;
63 send_params.channel = 0;
64 send_params.flags = FRESCAN_SS | FRESCAN_ASYNC;
65 send_params.to = (me == 0)? 1 : 0;
67 recv_params.net = NETWORK;
68 recv_params.channel = 0;
69 recv_params.flags = FRESCAN_SYNC;
72 printf(">> Init logger and timer measurements\n");
74 ret = logger_init(LOG_DEVICE);
77 ret = time_measure_hwtime_init(BEGIN, "frescan_begin");
80 ret = time_measure_hwtime_init(END, "frescan_end");
83 printf(">> Enter in loop for send-recv packets\n");
85 for (i=0; i<=100; i++) {
86 written = snprintf(msg, sizeof(msg), "0123456789012345678901234567890123456789%d", i);
88 time_measure_hwtime_set_timestamp(BEGIN);
90 ret = frescan_send(&send_params,
93 if (ret != 0) ERROR ("could not send message\n");
95 ret = frescan_recv(&recv_params,
101 if (ret != 0) ERROR ("could not receive message");
103 time_measure_hwtime_set_timestamp(END);
105 // msg[recv_bytes] = '\0';
106 // printf("Received Answer (bytes:%u): %s\n", recv_bytes, msg);
109 ret = time_measure_hwtime_write_membuffer(BEGIN);
112 ret = time_measure_hwtime_write_membuffer(END);
115 while (logger_manual_call() > 0);
118 printf(">> Enter in loop for recv-send packets\n");
121 ret = frescan_recv(&recv_params,
127 if (ret != 0) ERROR ("could not receive message");
129 ret = frescan_send(&send_params,
132 if (ret != 0) ERROR ("could not send message\n");