]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_fp_send_receive_measures.c
new tests and measures
[frescor/fna.git] / tests / tests_frescan / test_frescan_fp_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  8  // 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 int main ()
26 {
27         int i, ret;
28         frescan_send_params_t send_params;
29         frescan_recv_params_t recv_params;
30         char msg[1500]; // big enough for all the messages
31         frescan_init_params_t init_params;
32         frescan_node_t me;
33         size_t recv_bytes;
34         frescan_node_t from;
35         frescan_prio_t prio;
36
37         me = LOCAL_NODE;
38
39         DEBUG(ENABLE_DEBUG, ">> Initializing FRESCAN (me:%u)\n", me);
40
41         init_params.net = NETWORK;
42         init_params.node = LOCAL_NODE;
43         init_params.tx_fp_max_prio = 10;
44         init_params.rx_num_of_channels = 5;
45         init_params.rx_channel_max_prio = NULL;
46
47         ret = frescan_init(&init_params);
48         if (ret != 0) ERROR ("could not init FRESCAN");
49
50         DEBUG(ENABLE_DEBUG, ">> Enter in loop for sending packets\n");
51
52         send_params.net      = NETWORK;
53         send_params.channel  = 0;
54         send_params.flags    = FRESCAN_FP | FRESCAN_ASYNC;
55         send_params.prio     = 9;
56         send_params.to       = (me == 0)? 1 : 0;
57
58         recv_params.net      = NETWORK;
59         recv_params.channel  = 0;
60         recv_params.flags    = FRESCAN_SYNC;
61
62         if (me == 0) {
63                 DEBUG(ENABLE_DEBUG, ">> Init logger and timer measurements\n");
64
65                 ret = logger_init(LOG_DEVICE);
66                 assert(ret == 0);
67
68                 ret = time_measure_hwtime_init(BEGIN, "frescan_begin");
69                 assert(ret == 0);
70
71                 ret = time_measure_hwtime_init(END, "frescan_end");
72                 assert(ret == 0);
73
74                 DEBUG(ENABLE_DEBUG, ">> Enter in loop for send-recv packets\n");
75
76                 for (i=0; i<NUM_MEASURES; i++) {
77                         time_measure_hwtime_set_timestamp(BEGIN);
78
79                         ret = frescan_send(&send_params,
80                                            (uint8_t *)msg,
81                                            NUM_MSG_BYTES);
82                         if (ret != 0) ERROR ("could not send message\n");
83
84                         ret = frescan_recv(&recv_params,
85                                            (uint8_t *)msg,
86                                            sizeof(msg),
87                                            &recv_bytes,
88                                            &from,
89                                            &prio);
90                         if (ret != 0) ERROR ("could not receive message");
91
92                         time_measure_hwtime_set_timestamp(END);
93
94                         DEBUG(ENABLE_DEBUG, ">> received %d bytes\n", recv_bytes);
95                 }
96
97                 ret = time_measure_hwtime_write_membuffer(BEGIN);
98                 assert(ret == 0);
99
100                 ret = time_measure_hwtime_write_membuffer(END);
101                 assert(ret == 0);
102
103                 while (logger_manual_call() > 0);
104
105         } else {
106                 DEBUG(ENABLE_DEBUG, ">> Enter in loop for recv-send packets\n");
107
108                 while(1) {
109                         ret = frescan_recv(&recv_params,
110                                            (uint8_t *)msg,
111                                            sizeof(msg),
112                                            &recv_bytes,
113                                            &from,
114                                            &prio);
115                         if (ret != 0) ERROR ("could not receive message");
116
117                         ret = frescan_send(&send_params,
118                                            (uint8_t *)msg,
119                                            recv_bytes);
120                         if (ret != 0) ERROR ("could not send message\n");
121                 }
122         }
123
124         return 0;
125 }