]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_servers_perceived_commit.c
servers perceived params and commit of those params
[frescor/fna.git] / tests / tests_frescan / test_frescan_servers_perceived_commit.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 = 6;
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(">> Setting perceived\n");
100
101         server_params.budget = 4;
102         server_params.period.tv_sec  = 2;
103         server_params.period.tv_nsec = 0;
104         server_params.prio = 8;
105
106         ret = frescan_servers_set_perceived(NETWORK,
107                                             &server_params,
108                                             params.ss);
109         if (ret != 0) PUT_ERROR ("could not set perceived");
110
111         printf(">> Getting data from Server\n");
112
113         ret = frescan_servers_get_data(NETWORK,
114                                        &server_params_read,
115                                        params.ss);
116         if (ret != 0) PUT_ERROR ("could not get data from server");
117
118         printf("params: C = %d\n T = (%d, %d) P = %d\n",
119                server_params_read.budget,
120                server_params_read.period.tv_sec,
121                server_params_read.period.tv_nsec,
122                server_params_read.prio);
123
124         ret = frescan_servers_get_current_budget(NETWORK,
125                                                  params.ss,
126                                                  &current_budget);
127         if (ret != 0) PUT_ERROR ("could not get current_budget");
128
129         printf("current_budget = %d\n", current_budget);
130
131         printf(">> Commit params to Server\n");
132
133         ret = frescan_servers_commit_perceived(NETWORK, params.ss);
134         if (ret != 0) PUT_ERROR ("could not commit params");
135
136         ret = frescan_servers_get_current_budget(NETWORK,
137                                                  params.ss,
138                                                  &current_budget);
139         if (ret != 0) PUT_ERROR ("could not get current_budget");
140
141         printf("current_budget = %d\n", current_budget);
142
143         printf(">> Enter in loop for sending packets\n");
144
145         params.net      = NETWORK;
146         params.to       = 1;
147         params.channel  = 0;
148         params.flags    = FRESCAN_SS | FRESCAN_ASYNC;
149
150         while(1) {
151                 pause();
152                 for (i=0; i<=2; i++) {
153                         written = snprintf(msg, sizeof(msg),
154                                            "his number is: %d", i);
155
156                         ret = frescan_send(&params, (uint8_t *)msg, written);
157                         if (ret != 0) PUT_ERROR ("could not send message\n");
158                         printf("SENT: %d\n", i);
159
160                         ret = frescan_servers_get_current_budget
161                                         (NETWORK, params.ss, &current_budget);
162                         if (ret != 0) PUT_ERROR ("could not get current_budget");
163                         printf("current_budget = %d\n", current_budget);
164                 }
165                 pause();
166                 ret = frescan_servers_get_current_budget
167                                 (NETWORK, params.ss, &current_budget);
168                 if (ret != 0) PUT_ERROR ("could not get current_budget");
169                 printf("current_budget = %d\n", current_budget);
170
171 #ifdef ENABLE_LOGGING
172                 while (logger_manual_call() > 0);
173 #endif
174 }
175
176         return 0;
177 }
178
179 #else
180
181 #define LOCAL_NODE 1
182
183 int main ()
184 {
185         int ret;
186         frescan_recv_params_t params;
187         uint8_t msg[3000];
188         size_t recv_bytes;
189         frescan_node_t from;
190         frescan_init_params_t init_params;
191         frescan_prio_t prio;
192
193         init_params.net = NETWORK;
194         init_params.node = LOCAL_NODE;
195         init_params.tx_fp_max_prio = 10;
196         init_params.rx_num_of_channels = 5;
197         init_params.rx_channel_max_prio = NULL;
198
199         ret = frescan_init(&init_params);
200         if (ret != 0) PUT_ERROR ("could not init FRESCAN");
201
202         printf("FRESCAN initialized\n");
203
204         params.net      = NETWORK;
205         params.channel  = 0;
206         params.flags    = FRESCAN_SYNC;
207
208         while (1) {
209                 printf("RECEIVING...\n");
210                 ret = frescan_recv(&params, (uint8_t *)msg, sizeof(msg),
211                                    &recv_bytes, &from, &prio);
212                 if (ret != 0) PUT_ERROR ("could not send message");
213
214                 msg[recv_bytes] = '\0';
215                 printf("RECEIVED: %s with prio:%u\n", msg, prio);
216
217 //                 for (i=0; i<recv_bytes; i++) {
218 //                         printf("msg[%d] = 0x%X;\n", i, msg[i]);
219 //                 }
220         }
221
222         return 0;
223 }
224
225 #endif