]> rtime.felk.cvut.cz Git - frescor/fna.git/blob - tests/tests_frescan/test_frescan_servers_send_basic.c
900f799f48f87aa0467f7c56f43e56a304d17730
[frescor/fna.git] / tests / tests_frescan / test_frescan_servers_send_basic.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 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;
45
46 #ifdef ENABLE_LOGGING
47         ret = logger_init(LOG_DEVICE);
48         assert(ret == 0);
49         printf("Changing to membuffer console\n");
50         MEMBUFFER_CONSOLE_INIT();
51 #endif
52
53         printf(">> Initializing FRESCAN\n");
54
55         init_params.net = NETWORK;
56         init_params.node = LOCAL_NODE;
57         init_params.tx_fp_max_prio = 10;
58         init_params.rx_num_of_channels = 5;
59         init_params.rx_channel_max_prio = NULL;
60
61         ret = frescan_init(&init_params);
62         if (ret != 0) ERROR ("could not init FRESCAN");
63
64         printf(">> Creating a Server\n");
65
66         server_params.values.budget = 3;
67         server_params.values.period.tv_sec  = 3;
68         server_params.values.period.tv_nsec = 0;
69         server_params.prio = 4;
70
71         ret = frescan_servers_create(NETWORK,
72                                      &server_params,
73                                      &params.ss);
74         if (ret != 0) ERROR ("could not create server");
75
76         printf(">> Enter in loop for sending packets\n");
77
78         params.net      = NETWORK;
79         params.to       = 1;
80         params.channel  = 0;
81         params.flags    = FRESCAN_SS | FRESCAN_ASYNC;
82
83         while(1) {
84                 pause();
85                 for (i=0; i<=2; i++) {
86                         written = snprintf(msg, sizeof(msg), "his number is: %d", i);
87                         ret = frescan_send(&params, (uint8_t *)msg, written);
88                         if (ret != 0) ERROR ("could not send message\n");
89                         printf("SENT: %d\n", i);
90 }
91 #ifdef ENABLE_LOGGING
92                 while (logger_manual_call() > 0);
93 #endif
94 }
95
96         return 0;
97 }
98
99 #else
100
101 #define LOCAL_NODE 1
102
103 int main ()
104 {
105         int ret;
106         frescan_recv_params_t params;
107         uint8_t msg[3000];
108         size_t recv_bytes;
109         frescan_node_t from;
110         frescan_init_params_t init_params;
111         frescan_prio_t prio;
112
113         init_params.net = NETWORK;
114         init_params.node = LOCAL_NODE;
115         init_params.tx_fp_max_prio = 10;
116         init_params.rx_num_of_channels = 5;
117         init_params.rx_channel_max_prio = NULL;
118
119         ret = frescan_init(&init_params);
120         if (ret != 0) ERROR ("could not init FRESCAN");
121
122         printf("FRESCAN initialized\n");
123
124         params.net      = NETWORK;
125         params.channel  = 0;
126         params.flags    = FRESCAN_SYNC;
127
128         while (1) {
129                 printf("RECEIVING...\n");
130                 ret = frescan_recv(&params, (uint8_t *)msg, sizeof(msg),
131                                    &recv_bytes, &from, &prio);
132                 if (ret != 0) ERROR ("could not send message");
133
134                 msg[recv_bytes] = '\0';
135                 printf("RECEIVED: %s with prio:%u\n", msg, prio);
136
137 //                 for (i=0; i<recv_bytes; i++) {
138 //                         printf("msg[%d] = 0x%X;\n", i, msg[i]);
139 //                 }
140         }
141
142         return 0;
143 }
144
145 #endif