aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias P. Braendli <matthias.braendli@mpb.li>2015-06-05 17:05:15 +0200
committerMatthias P. Braendli <matthias.braendli@mpb.li>2015-06-05 17:05:15 +0200
commit1ad1d10f91b155a6d831a5f0da250eff9eeb1ee6 (patch)
treec0858fe5fe106fd5d93600895d9b3fdad0cab1ce
parentca49fd3dea60034e6200c5cf12833bd215082824 (diff)
downloadmmbtools-aux-1ad1d10f91b155a6d831a5f0da250eff9eeb1ee6.tar.gz
mmbtools-aux-1ad1d10f91b155a6d831a5f0da250eff9eeb1ee6.tar.bz2
mmbtools-aux-1ad1d10f91b155a6d831a5f0da250eff9eeb1ee6.zip
Update zmq-sub to show ETI rate
-rw-r--r--zmqtest/zmq-sub/Makefile2
-rw-r--r--zmqtest/zmq-sub/zmq-sub.c47
2 files changed, 46 insertions, 3 deletions
diff --git a/zmqtest/zmq-sub/Makefile b/zmqtest/zmq-sub/Makefile
index fc357f7..1b1f646 100644
--- a/zmqtest/zmq-sub/Makefile
+++ b/zmqtest/zmq-sub/Makefile
@@ -1,6 +1,6 @@
GIT_VERSION = $(shell git describe --long --all | cut -d "-" -f 3)
-CFLAGS = -Wall -g -std=c99 -lzmq -DGIT_VERSION=\"$(GIT_VERSION)\"
+CFLAGS = -Wall -g -std=gnu11 -lzmq -DGIT_VERSION=\"$(GIT_VERSION)\"
all: zmq-sub
diff --git a/zmqtest/zmq-sub/zmq-sub.c b/zmqtest/zmq-sub/zmq-sub.c
index 22ba80a..2212ba0 100644
--- a/zmqtest/zmq-sub/zmq-sub.c
+++ b/zmqtest/zmq-sub/zmq-sub.c
@@ -7,6 +7,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
+#include <time.h>
#define NUM_FRAMES_PER_ZMQ_MESSAGE 4
@@ -18,6 +19,22 @@ struct zmq_dab_message_t
uint8_t buf[NUM_FRAMES_PER_ZMQ_MESSAGE*6144];
};
+long timespecdiff_ms(struct timespec time, struct timespec oldTime)
+{
+ long tv_sec;
+ long tv_nsec;
+ if (time.tv_nsec < oldTime.tv_nsec) {
+ tv_sec = time.tv_sec - 1 - oldTime.tv_sec;
+ tv_nsec = 1000000000L + time.tv_nsec - oldTime.tv_nsec;
+ }
+ else {
+ tv_sec = time.tv_sec - oldTime.tv_sec;
+ tv_nsec = time.tv_nsec - oldTime.tv_nsec;
+ }
+
+ return tv_sec * 1000 + tv_nsec / 1000000;
+}
+
void barf()
{
@@ -50,6 +67,11 @@ void do_subscriber(const char* host, int port)
struct zmq_dab_message_t message;
+ struct timespec time_start;
+ size_t total_size = 0;
+ size_t num_frames = 0;
+ long last_sec = 0;
+
while (1) {
uint8_t* eti_p = eti;
@@ -59,12 +81,33 @@ void do_subscriber(const char* host, int port)
if (rc > 0 && message.version == 1) {
uint8_t* buf = message.buf;
- for (int i = 0; i < NUM_FRAMES_PER_ZMQ_MESSAGE; i++) {
- fprintf(stderr, "i=%d buflen=%d\n", i, message.buflen[i]);
+ struct timespec time_now;
+ clock_gettime(CLOCK_MONOTONIC, &time_now);
+ if (num_frames == 0) {
+ time_start.tv_nsec = time_now.tv_nsec;
+ time_start.tv_sec = time_now.tv_sec;
+ last_sec = time_now.tv_sec;
+ }
+
+ if (time_now.tv_sec > last_sec) {
+ last_sec = time_now.tv_sec;
+
+ // calculate time_now - time_start in us
+ long diff_ms = timespecdiff_ms(time_now, time_start);
+
+ fprintf(stderr, "Received %zu bytes, %zu ETI frames in %ld milliseconds : %f bytes/second; %f ms/frame\n",
+ total_size, num_frames, diff_ms, 1e3 * total_size/diff_ms,
+ (double)diff_ms/num_frames);
+ }
+
+ for (int i = 0; i < NUM_FRAMES_PER_ZMQ_MESSAGE; i++) {
memcpy(eti_p, buf, message.buflen[i]);
eti_p += 6144;
buf += message.buflen[i];
+
+ total_size += message.buflen[i];
+ num_frames++;
}
write(STDOUT_FILENO, eti, framelen);