]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_servers_send_receive_measures.c
0c6f55bbf05eb0e0d66ae4266b3235ae9a8644e7
[frescor/fna.git] / tests / tests_frescan / test_frescan_servers_send_receive_measures.c
1 #include <stdio.h>  // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h>   // sleep
4 #include <assert.h>
5
6 #include "frescan.h"
7 #include "frescan_servers.h"
8 #include "frescan_debug.h"
9
10 #define NETWORK 0
11 #define LOG_DEVICE LOG_ETHERNET
12
13 #define NUM_MSG_BYTES  512  // 8 32 64 512 1488
14 #define ENABLE_DEBUG   false
15 #define NUM_MEASURES   100
16
17 #define LOCAL_NODE 0 // 0 1
18
19 #include <misc/time_measurement_hwtime.h>
20 #include <misc/logger.h>
21
22 static const trace_point_id_t BEGIN = 0;
23 static const trace_point_id_t END = 1;
24
25 #define DISABLE_MEASURES
26
27 int main ()
28 {
29         int i, ret;
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;
35         frescan_node_t me;
36         size_t recv_bytes;
37         frescan_node_t from;
38         frescan_prio_t prio;
39
40         me = LOCAL_NODE;
41
42         DEBUG(ENABLE_DEBUG, ">> Initializing FRESCAN (me:%u)\n", me);
43
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;
49
50         ret = frescan_init(&init_params);
51         if (ret != 0) ERROR ("could not init FRESCAN");
52
53         DEBUG(ENABLE_DEBUG, ">> Creating a Server\n");
54
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;
59
60         ret = frescan_servers_create(NETWORK,
61                                      &server_params,
62                                      &send_params.ss);
63         if (ret != 0) ERROR ("could not create server");
64
65         DEBUG(ENABLE_DEBUG, ">> Enter in loop for sending packets\n");
66
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;
71
72         recv_params.net      = NETWORK;
73         recv_params.channel  = 0;
74         recv_params.flags    = FRESCAN_SYNC;
75
76         if (me == 0) {
77                 DEBUG(ENABLE_DEBUG, ">> Init logger and timer measurements\n");
78
79 #ifndef DISABLE_MEASURES
80                 ret = logger_init(LOG_DEVICE);
81                 assert(ret == 0);
82
83                 ret = time_measure_hwtime_init(BEGIN, "frescan_begin");
84                 assert(ret == 0);
85
86                 ret = time_measure_hwtime_init(END, "frescan_end");
87                 assert(ret == 0);
88 #endif
89                 DEBUG(ENABLE_DEBUG, ">> Enter in loop for send-recv packets\n");
90
91                 for (i=0; i<NUM_MEASURES; i++) {
92 #ifndef DISABLE_MEASURES
93                         time_measure_hwtime_set_timestamp(BEGIN);
94 #endif
95                         ret = frescan_send(&send_params,
96                                            (uint8_t *)msg,
97                                            NUM_MSG_BYTES);
98                         if (ret != 0) ERROR ("could not send message\n");
99
100                         ret = frescan_recv(&recv_params,
101                                            (uint8_t *)msg,
102                                            sizeof(msg),
103                                            &recv_bytes,
104                                            &from,
105                                            &prio);
106                         if (ret != 0) ERROR ("could not receive message");
107 #ifndef DISABLE_MEASURES
108                         time_measure_hwtime_set_timestamp(END);
109 #endif
110                         DEBUG(ENABLE_DEBUG, ">> received %d bytes\n", recv_bytes);
111                         sleep(1);
112                 }
113 #ifndef DISABLE_MEASURES
114                 ret = time_measure_hwtime_write_membuffer(BEGIN);
115                 assert(ret == 0);
116
117                 ret = time_measure_hwtime_write_membuffer(END);
118                 assert(ret == 0);
119
120                 while (logger_manual_call() > 0);
121 #endif
122         } else {
123                 DEBUG(ENABLE_DEBUG, ">> Enter in loop for recv-send packets\n");
124
125                 while(1) {
126                         ret = frescan_recv(&recv_params,
127                                            (uint8_t *)msg,
128                                            sizeof(msg),
129                                            &recv_bytes,
130                                            &from,
131                                            &prio);
132                         if (ret != 0) ERROR ("could not receive message");
133
134                         ret = frescan_send(&send_params,
135                                            (uint8_t *)msg,
136                                            recv_bytes);
137                         if (ret != 0) ERROR ("could not send message\n");
138                 }
139         }
140
141         sleep(100);
142
143         return 0;
144 }