]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_servers_current_budget.c
changes in frescan, programming the changes of mode and the reservation commit mechan...
[frescor/fna.git] / tests / tests_frescan / test_frescan_servers_current_budget.c
1 // mgcc test_frescan_servers_send_basic.c -L. -lfrescan -o mprogram_wifi2
2 // mgcc test_frescan_servers_send_basic.c -DSENDER -L. -lfrescan -o mprogram_wifi1
3
4 #include <stdio.h>  // perror
5 #include <stdlib.h> // exit
6 #include <unistd.h>   // sleep
7
8 #include "frescan.h"
9 #include "frescan_servers.h"
10
11 #define PUT_ERROR(s) {perror (s); exit (-1);}
12
13 #define NETWORK 0
14
15 #define SENDER
16 // #define ENABLE_LOGGING
17
18 #ifdef SENDER
19
20 #define LOCAL_NODE 0
21
22 #ifdef ENABLE_LOGGING
23
24 #include <drivers/console_switcher.h>
25 #include <misc/logger.h>
26 #include <assert.h>
27 #define LOG_DEVICE LOG_ETHERNET
28
29 #endif
30
31 static void pause(){
32         char key;
33         printf(" press Enter...");
34         key = getchar();
35 }
36
37 int main ()
38 {
39         int i, ret;
40         frescan_send_params_t params;
41         char msg[200];
42         int written;
43         frescan_init_params_t init_params;
44         frescan_server_params_t server_params, server_params_read;
45         frescan_budget_t current_budget;
46
47 #ifdef ENABLE_LOGGING
48         ret = logger_init(LOG_DEVICE);
49         assert(ret == 0);
50         printf("Changing to membuffer console\n");
51         MEMBUFFER_CONSOLE_INIT();
52 #endif
53
54         printf(">> Initializing FRESCAN\n");
55
56         init_params.net = NETWORK;
57         init_params.node = LOCAL_NODE;
58         init_params.tx_fp_max_prio = 10;
59         init_params.rx_num_of_channels = 5;
60         init_params.rx_channel_max_prio = NULL;
61
62         ret = frescan_init(&init_params);
63         if (ret != 0) PUT_ERROR ("could not init FRESCAN");
64
65         printf(">> Creating a Server\n");
66
67         server_params.budget = 3;
68         server_params.period.tv_sec  = 3;
69         server_params.period.tv_nsec = 0;
70         server_params.prio = 4;
71
72         ret = frescan_servers_create(NETWORK,
73                                      &server_params,
74                                      &params.ss);
75         if (ret != 0) PUT_ERROR ("could not create server");
76
77         printf(">> Getting data from Server\n");
78
79         ret = frescan_servers_get_data(NETWORK,
80                                        &server_params_read,
81                                        params.ss);
82         if (ret != 0) PUT_ERROR ("could not get data from server");
83
84         printf("params: C = %d\n T = (%d, %d) P = %d\n",
85                server_params_read.budget,
86                server_params_read.period.tv_sec,
87                server_params_read.period.tv_nsec,
88                server_params_read.prio);
89
90         printf(">> Getting current_budget from Server\n");
91
92         ret = frescan_servers_get_current_budget(NETWORK,
93                                                  params.ss,
94                                                  &current_budget);
95         if (ret != 0) PUT_ERROR ("could not get current_budget");
96
97         printf("current_budget = %d\n", current_budget);
98
99         printf(">> Enter in loop for sending packets\n");
100
101         params.net      = NETWORK;
102         params.to       = 1;
103         params.channel  = 0;
104         params.flags    = FRESCAN_SS | FRESCAN_ASYNC;
105
106         while(1) {
107                 pause();
108                 for (i=0; i<=2; i++) {
109                         written = snprintf(msg, sizeof(msg),
110                                            "his number is: %d", i);
111
112                         ret = frescan_send(&params, (uint8_t *)msg, written);
113                         if (ret != 0) PUT_ERROR ("could not send message\n");
114                         printf("SENT: %d\n", i);
115
116                         ret = frescan_servers_get_current_budget
117                                         (NETWORK, params.ss, &current_budget);
118                         if (ret != 0) PUT_ERROR ("could not get current_budget");
119                         printf("current_budget = %d\n", current_budget);
120                 }
121                 pause();
122                 ret = frescan_servers_get_current_budget
123                                 (NETWORK, params.ss, &current_budget);
124                 if (ret != 0) PUT_ERROR ("could not get current_budget");
125                 printf("current_budget = %d\n", current_budget);
126
127 #ifdef ENABLE_LOGGING
128                 while (logger_manual_call() > 0);
129 #endif
130 }
131
132         return 0;
133 }
134
135 #else
136
137 #define LOCAL_NODE 1
138
139 int main ()
140 {
141         int ret;
142         frescan_recv_params_t params;
143         uint8_t msg[3000];
144         size_t recv_bytes;
145         frescan_node_t from;
146         frescan_init_params_t init_params;
147         frescan_prio_t prio;
148
149         init_params.net = NETWORK;
150         init_params.node = LOCAL_NODE;
151         init_params.tx_fp_max_prio = 10;
152         init_params.rx_num_of_channels = 5;
153         init_params.rx_channel_max_prio = NULL;
154
155         ret = frescan_init(&init_params);
156         if (ret != 0) PUT_ERROR ("could not init FRESCAN");
157
158         printf("FRESCAN initialized\n");
159
160         params.net      = NETWORK;
161         params.channel  = 0;
162         params.flags    = FRESCAN_SYNC;
163
164         while (1) {
165                 printf("RECEIVING...\n");
166                 ret = frescan_recv(&params, (uint8_t *)msg, sizeof(msg),
167                                    &recv_bytes, &from, &prio);
168                 if (ret != 0) PUT_ERROR ("could not send message");
169
170                 msg[recv_bytes] = '\0';
171                 printf("RECEIVED: %s with prio:%u\n", msg, prio);
172
173 //                 for (i=0; i<recv_bytes; i++) {
174 //                         printf("msg[%d] = 0x%X;\n", i, msg[i]);
175 //                 }
176         }
177
178         return 0;
179 }
180
181 #endif