2023-08-01 23:45:58

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: [BlueZ PATCH v2 5/5] monitor/analyze: Inline data to gnuplot

From: Luiz Augusto von Dentz <[email protected]>

Instead of creating a separate file just to write the x:y axis inline
the data via gnuplot $data variable then use it to plot.
---
monitor/analyze.c | 29 +++++++++++------------------
1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/monitor/analyze.c b/monitor/analyze.c
index d0ad70d5dc74..687595cb249a 100644
--- a/monitor/analyze.c
+++ b/monitor/analyze.c
@@ -112,35 +112,29 @@ static void tmp_write(void *data, void *user_data)

static void plot_draw(struct queue *queue)
{
- const char *filename = "analyze.tmp";
- FILE *gplot = popen("gnuplot", "w");
- FILE *tmp;
+ FILE *gplot;

+ if (queue_length(queue) < 2)
+ return;
+
+ gplot = popen("gnuplot", "w");
if (!gplot)
return;

- if (queue_isempty(queue))
- goto done;
-
- tmp = fopen(filename, "w");
- if (!tmp)
- goto done;
-
- queue_foreach(queue, tmp_write, tmp);
+ fprintf(gplot, "$data << EOD\n");
+ queue_foreach(queue, tmp_write, gplot);
+ fprintf(gplot, "EOD\n");

fprintf(gplot, "set terminal dumb enhanced ansi\n");
fprintf(gplot, "set xlabel 'Latency (ms)'\n");
fprintf(gplot, "set tics out nomirror\n");
fprintf(gplot, "set log y\n");
fprintf(gplot, "set yrange [0.5:*]\n");
- fprintf(gplot, "plot './%s' using 1:2 t 'Packets' w impulses\n",
- filename);
+ fprintf(gplot, "set log y\n");
+ fprintf(gplot, "plot $data using 1:2 t 'Packets' w impulses\n");
fflush(gplot);

- fclose(tmp);
-done:
pclose(gplot);
- unlink(filename);
}

static void chan_destroy(void *data)
@@ -166,8 +160,7 @@ static void chan_destroy(void *data)
print_field("~%lld Kb/s TX transfer speed",
chan->tx_bytes * 8 / TV_MSEC(chan->tx_l.total));

- if (chan->num > 1)
- plot_draw(chan->plot);
+ plot_draw(chan->plot);

free(chan);
}
--
2.41.0