--- /dev/null
+#include <stdio.h> // perror
+#include <stdlib.h> // exit
+#include <unistd.h> // sleep
+#include <assert.h>
+
+#include "frescan.h"
+#include "frescan_servers.h"
+#include "frescan_debug.h"
+
+#define NETWORK 0
+#define LOG_DEVICE LOG_ETHERNET
+
+#define NUM_MSG_BYTES 8 // 8 32 64 512 1488
+#define ENABLE_DEBUG false
+#define NUM_MEASURES 100
+
+#define LOCAL_NODE 0 // 0 1
+
+#include <misc/time_measurement_hwtime.h>
+#include <misc/logger.h>
+
+static const trace_point_id_t BEGIN = 0;
+static const trace_point_id_t END = 1;
+
+int main ()
+{
+ int i, ret;
+ frescan_send_params_t send_params;
+ frescan_recv_params_t recv_params;
+ char msg[1500]; // big enough for all the messages
+ frescan_init_params_t init_params;
+ frescan_node_t me;
+ size_t recv_bytes;
+ frescan_node_t from;
+ frescan_prio_t prio;
+
+ me = LOCAL_NODE;
+
+ DEBUG(ENABLE_DEBUG, ">> Initializing FRESCAN (me:%u)\n", me);
+
+ init_params.net = NETWORK;
+ init_params.node = LOCAL_NODE;
+ init_params.tx_fp_max_prio = 10;
+ init_params.rx_num_of_channels = 5;
+ init_params.rx_channel_max_prio = NULL;
+
+ ret = frescan_init(&init_params);
+ if (ret != 0) ERROR ("could not init FRESCAN");
+
+ DEBUG(ENABLE_DEBUG, ">> Enter in loop for sending packets\n");
+
+ send_params.net = NETWORK;
+ send_params.channel = 0;
+ send_params.flags = FRESCAN_FP | FRESCAN_ASYNC;
+ send_params.prio = 9;
+ send_params.to = (me == 0)? 1 : 0;
+
+ recv_params.net = NETWORK;
+ recv_params.channel = 0;
+ recv_params.flags = FRESCAN_SYNC;
+
+ if (me == 0) {
+ DEBUG(ENABLE_DEBUG, ">> Init logger and timer measurements\n");
+
+ ret = logger_init(LOG_DEVICE);
+ assert(ret == 0);
+
+ ret = time_measure_hwtime_init(BEGIN, "frescan_begin");
+ assert(ret == 0);
+
+ ret = time_measure_hwtime_init(END, "frescan_end");
+ assert(ret == 0);
+
+ DEBUG(ENABLE_DEBUG, ">> Enter in loop for send-recv packets\n");
+
+ for (i=0; i<NUM_MEASURES; i++) {
+ time_measure_hwtime_set_timestamp(BEGIN);
+
+ ret = frescan_send(&send_params,
+ (uint8_t *)msg,
+ NUM_MSG_BYTES);
+ if (ret != 0) ERROR ("could not send message\n");
+
+ ret = frescan_recv(&recv_params,
+ (uint8_t *)msg,
+ sizeof(msg),
+ &recv_bytes,
+ &from,
+ &prio);
+ if (ret != 0) ERROR ("could not receive message");
+
+ time_measure_hwtime_set_timestamp(END);
+
+ DEBUG(ENABLE_DEBUG, ">> received %d bytes\n", recv_bytes);
+ }
+
+ ret = time_measure_hwtime_write_membuffer(BEGIN);
+ assert(ret == 0);
+
+ ret = time_measure_hwtime_write_membuffer(END);
+ assert(ret == 0);
+
+ while (logger_manual_call() > 0);
+
+ } else {
+ DEBUG(ENABLE_DEBUG, ">> Enter in loop for recv-send packets\n");
+
+ while(1) {
+ ret = frescan_recv(&recv_params,
+ (uint8_t *)msg,
+ sizeof(msg),
+ &recv_bytes,
+ &from,
+ &prio);
+ if (ret != 0) ERROR ("could not receive message");
+
+ ret = frescan_send(&send_params,
+ (uint8_t *)msg,
+ recv_bytes);
+ if (ret != 0) ERROR ("could not send message\n");
+ }
+ }
+
+ return 0;
+}
#include "frescan.h"
#include "frescan_servers.h"
+#include "frescan_debug.h"
-#define ERROR(s) {perror (s); exit (-1);}
#define NETWORK 0
#define LOG_DEVICE LOG_ETHERNET
-#define LOCAL_NODE 0
+#define NUM_MSG_BYTES 1488 // 8 32 64 512 1488
+#define ENABLE_DEBUG false
+#define NUM_MEASURES 100
+
+#define LOCAL_NODE 0 // 0 1
#include <misc/time_measurement_hwtime.h>
#include <misc/logger.h>
int i, ret;
frescan_send_params_t send_params;
frescan_recv_params_t recv_params;
- char msg[200];
- int written;
+ char msg[1500]; // big enough for all the messages
frescan_init_params_t init_params;
frescan_server_params_t server_params;
frescan_node_t me;
me = LOCAL_NODE;
- printf(">> Initializing FRESCAN (me:%u)\n", me);
+ DEBUG(ENABLE_DEBUG, ">> Initializing FRESCAN (me:%u)\n", me);
init_params.net = NETWORK;
init_params.node = LOCAL_NODE;
ret = frescan_init(&init_params);
if (ret != 0) ERROR ("could not init FRESCAN");
- printf(">> Creating a Server\n");
+ DEBUG(ENABLE_DEBUG, ">> Creating a Server\n");
- server_params.values.budget = 3;
- server_params.values.period.tv_sec = 3;
+ server_params.values.budget = NUM_MSG_BYTES / 8;
+ server_params.values.period.tv_sec = 1;
server_params.values.period.tv_nsec = 0;
server_params.prio = 4;
&send_params.ss);
if (ret != 0) ERROR ("could not create server");
- printf(">> Enter in loop for sending packets\n");
+ DEBUG(ENABLE_DEBUG, ">> Enter in loop for sending packets\n");
send_params.net = NETWORK;
send_params.channel = 0;
recv_params.flags = FRESCAN_SYNC;
if (me == 0) {
- printf(">> Init logger and timer measurements\n");
+ DEBUG(ENABLE_DEBUG, ">> Init logger and timer measurements\n");
ret = logger_init(LOG_DEVICE);
assert(ret == 0);
ret = time_measure_hwtime_init(END, "frescan_end");
assert(ret == 0);
- printf(">> Enter in loop for send-recv packets\n");
-
- for (i=0; i<=100; i++) {
- written = snprintf(msg, sizeof(msg), "0123456789012345678901234567890123456789%d", i);
+ DEBUG(ENABLE_DEBUG, ">> Enter in loop for send-recv packets\n");
+ for (i=0; i<NUM_MEASURES; i++) {
time_measure_hwtime_set_timestamp(BEGIN);
ret = frescan_send(&send_params,
(uint8_t *)msg,
- written);
+ NUM_MSG_BYTES);
if (ret != 0) ERROR ("could not send message\n");
ret = frescan_recv(&recv_params,
time_measure_hwtime_set_timestamp(END);
- // msg[recv_bytes] = '\0';
- // printf("Received Answer (bytes:%u): %s\n", recv_bytes, msg);
+ DEBUG(ENABLE_DEBUG, ">> received %d bytes\n", recv_bytes);
}
ret = time_measure_hwtime_write_membuffer(BEGIN);
while (logger_manual_call() > 0);
} else {
- printf(">> Enter in loop for recv-send packets\n");
+ DEBUG(ENABLE_DEBUG, ">> Enter in loop for recv-send packets\n");
while(1) {
ret = frescan_recv(&recv_params,