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