]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_servers_send_fast.c
cb998297fcb8ab23dcd627db98f6135c09c4d2b0
[frescor/fna.git] / tests / tests_frescan / test_frescan_servers_send_fast.c
1 #include <stdio.h>  // perror
2 #include <stdlib.h> // exit
3 #include <unistd.h>   // sleep
4 #include <assert.h>
5
6 #include <drivers/console_switcher.h>
7 #include <misc/logger.h>
8
9 #include "frescan.h"
10 #include "frescan_servers.h"
11
12 #define PUT_ERROR(s) {perror (s); exit (-1);}
13
14 #define NETWORK 0
15 // #define SENDER
16
17 #ifdef SENDER
18
19 #define LOCAL_NODE 0
20
21 static void pause(){
22         char key;
23         printf(" press Enter...");
24         key = getchar();
25 }
26
27 int main ()
28 {
29         int i, ret;
30         frescan_send_params_t params;
31         char msg[200];
32         frescan_init_params_t init_params;
33         frescan_server_params_t server_params;
34
35         ret = logger_init(LOG_ETHERNET);
36         assert(ret == 0);
37
38 //         MEMBUFFER_CONSOLE_INIT();
39
40         printf(">> Initializing FRESCAN\n");
41
42         init_params.net = NETWORK;
43         init_params.node = LOCAL_NODE;
44         init_params.tx_fp_max_prio = 10;
45         init_params.rx_num_of_channels = 5;
46         init_params.rx_channel_max_prio = NULL;
47
48         ret = frescan_init(&init_params);
49         if (ret != 0) PUT_ERROR ("could not init FRESCAN");
50
51         printf(">> Creating a Server\n");
52
53         server_params.budget = 4;
54         server_params.period.tv_sec  = 3;
55         server_params.period.tv_nsec = 0;
56         server_params.prio = 5;
57
58         ret = frescan_servers_create(NETWORK,
59                                      &server_params,
60                                      &params.ss);
61         if (ret != 0) PUT_ERROR ("could not create server");
62
63         printf(">> Enter in loop for sending packets\n");
64
65         params.net      = NETWORK;
66         params.to       = 1;
67         params.channel  = 2;
68         params.flags    = FRESCAN_SS | FRESCAN_ASYNC;
69
70         while(1) {
71                 pause();
72                 for (i=0; i<2; i++) {
73                         *((uint8_t *)msg) = (uint8_t)i;
74                         ret = frescan_send(&params, (uint8_t *)msg, 3);
75                         if (ret != 0) PUT_ERROR ("could not send message\n");
76                         while (logger_manual_call() > 0);
77                        printf("SENT\n");
78                 }
79         }
80
81         return 0;
82 }
83
84 #else
85
86 #define LOCAL_NODE 1
87
88 int main ()
89 {
90         int ret;
91         frescan_recv_params_t params;
92         uint8_t msg[3000];
93         size_t recv_bytes;
94         frescan_node_t from;
95         frescan_init_params_t init_params;
96         frescan_prio_t prio;
97
98         init_params.net = NETWORK;
99         init_params.node = LOCAL_NODE;
100         init_params.tx_fp_max_prio = 10;
101         init_params.rx_num_of_channels = 5;
102         init_params.rx_channel_max_prio = NULL;
103
104         ret = frescan_init(&init_params);
105         if (ret != 0) PUT_ERROR ("could not init FRESCAN");
106
107         printf("FRESCAN initialized\n");
108
109         params.net      = NETWORK;
110         params.channel  = 2;
111         params.flags    = FRESCAN_SYNC;
112
113         while (1) {
114                 printf("RECEIVING...\n");
115                 ret = frescan_recv(&params, (uint8_t *)msg, sizeof(msg),
116                                    &recv_bytes, &from, &prio);
117                 if (ret != 0) PUT_ERROR ("could not send message");
118
119                 printf("RECEIVED msg %u with prio:%u\n", msg[0], prio);
120
121 //                 for (i=0; i<recv_bytes; i++) {
122 //                         printf("msg[%d] = 0x%X;\n", i, msg[i]);
123 //                 }
124         }
125
126         return 0;
127 }
128
129 #endif