Commit 3e13c910 authored by Federico Vaga's avatar Federico Vaga

wrtd:tool: check version before using a device

Signed-off-by: Federico Vaga's avatarFederico Vaga <federico.vaga@cern.ch>


NOTE
This commit has been created by `git subtree` on the Mock Turtle repository
on tag mock-turtle-2.0

This commit will not compile
parent 47f7e20c
......@@ -175,6 +175,7 @@ extern int wrtd_white_rabbit_sync(struct wrtd_node *dev,
* Set of utilities
* @{
*/
extern int wrtd_version_is_valid(struct wrtd_node *dev);
extern const char *wrtd_strerror(int err);
extern void wrtd_ts_to_pico(struct wr_timestamp *ts, uint64_t *pico);
extern void wrtd_pico_to_ts(uint64_t *pico, struct wr_timestamp *ts);
......
......@@ -11,6 +11,7 @@
#include <errno.h>
#include <getopt.h>
#include <inttypes.h>
#include <libgen.h>
#include <libwrnc.h>
#include <libwrtd.h>
......@@ -204,6 +205,12 @@ int main(int argc, char *argv[])
if (err)
exit(1);
if (!wrtd_version_is_valid(wrtd)) {
fprintf(stderr, "Cannot run %s: %s\n",
basename(argv[0]), wrtd_strerror(errno));
goto out;
}
if (setoff) {
/* Inform the input real-time channels about the offset */
for (i = 0; i < TDC_NUM_CHANNELS; ++i) {
......@@ -226,13 +233,13 @@ int main(int argc, char *argv[])
}
}
wrtd_close(wrtd);
if (cerr)
fprintf(stderr, "White Rabbit Trigger Distribution programmed but with %d problems\n", cerr);
else
fprintf(stdout,
"White Rabbit Trigger Distribution node succesfully programmed\n");
out:
wrtd_close(wrtd);
exit(0);
}
......@@ -11,6 +11,7 @@
#include <errno.h>
#include <string.h>
#include <getopt.h>
#include <libgen.h>
#include <libwrnc.h>
#include <libwrtd.h>
#include <inttypes.h>
......@@ -340,6 +341,11 @@ int main(int argc, char *argv[])
fprintf(stderr, "Cannot open WRNC: %s\n", wrtd_strerror(errno));
exit(1);
}
if (!wrtd_version_is_valid(wrtd)) {
fprintf(stderr, "Cannot run %s: %s\n",
basename(argv[0]), wrtd_strerror(errno));
goto out;
}
for (i = 0; cmds[i].handler; i++) {
if(!strcmp(cmds[i].name, cmd)) {
......@@ -355,7 +361,7 @@ int main(int argc, char *argv[])
cmd, wrtd_strerror(errno));
}
out:
wrtd_close(wrtd);
exit(0);
}
......@@ -12,6 +12,7 @@
#include <getopt.h>
#include <poll.h>
#include <inttypes.h>
#include <libgen.h>
#include <pthread.h>
#include <libwrnc.h>
#include <libwrtd.h>
......@@ -165,6 +166,12 @@ int main(int argc, char *argv[])
}
th_data[1].wrtd = th_data[0].wrtd;
if (!wrtd_version_is_valid(th_data[0].wrtd)) {
fprintf(stderr, "Cannot run %s: %s\n",
basename(argv[0]), wrtd_strerror(errno));
goto out;
}
if (show_log) {
show_logging_level(th_data[WRTD_CORE_IN].wrtd, WRTD_CORE_IN);
show_logging_level(th_data[WRTD_CORE_OUT].wrtd, WRTD_CORE_OUT);
......@@ -185,6 +192,7 @@ int main(int argc, char *argv[])
for (i = 0; i < N_LOG; i++)
pthread_join(tid[i], NULL);
out:
wrtd_close(th_data[0].wrtd);
exit(0);
}
......@@ -11,6 +11,7 @@
#include <errno.h>
#include <string.h>
#include <getopt.h>
#include <libgen.h>
#include <libwrnc.h>
#include <libwrtd.h>
......@@ -606,6 +607,12 @@ int main(int argc, char *argv[])
exit(1);
}
if (!wrtd_version_is_valid(wrtd)) {
fprintf(stderr, "Cannot run %s: %s\n",
basename(argv[0]), wrtd_strerror(errno));
goto out;
}
for (i = 0; cmds[i].handler; i++) {
if(!strcmp(cmds[i].name, cmd)) {
err = cmds[i].handler(wrtd, chan, argc - optind,
......@@ -624,7 +631,7 @@ int main(int argc, char *argv[])
fprintf(stderr, "Error while executing command '%s': %s\n",
cmd, wrtd_strerror(errno));
out:
wrtd_close(wrtd);
exit(0);
}
......@@ -11,6 +11,7 @@
#include <errno.h>
#include <string.h>
#include <getopt.h>
#include <libgen.h>
#include <libwrtd.h>
void help()
......@@ -78,6 +79,12 @@ int main(int argc, char *argv[])
exit(1);
}
if (!wrtd_version_is_valid(wrtd)) {
fprintf(stderr, "Cannot run %s: %s\n",
basename(argv[0]), wrtd_strerror(errno));
goto out;
}
while (n--) {
/* Get base time here to reduce the delay between the
two requests */
......@@ -128,6 +135,7 @@ int main(int argc, char *argv[])
usleep(period);
}
out:
wrtd_close(wrtd);
exit(0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment