Commit 2ead4a84 authored by Tomasz Wlostowski's avatar Tomasz Wlostowski Committed by Federico Vaga

wrtd:tools: added missing output test program functions

parent 227a031b
......@@ -18,19 +18,17 @@
static int wrtd_cmd_state(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_delay(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_enable(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_disable(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_pulse_width(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_assign(struct wrtd_node *wrtd, int output,
static int wrtd_cmd_show(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_unassign(struct wrtd_node *wrtd, int output,
static int wrtd_cmd_trig_assign(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_show(struct wrtd_node *wrtd, int output,
static int wrtd_cmd_trig_unassign(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_trig_enable(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
......@@ -38,20 +36,47 @@ static int wrtd_cmd_trig_disable(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_trig_stats(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_trig_delay(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_trig_cond_delay(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_trig_find(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_arm(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_disarm(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_mode(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_dead_time(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_reset_counters(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_log_level(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static int wrtd_cmd_software_trigger(struct wrtd_node *wrtd, int output,
int argc, char *argv[]);
static struct wrtd_commands cmds[] = {
{ "state", "shows output state", wrtd_cmd_state },
{ "assign", "assigns a trigger", wrtd_cmd_assign },
{ "unassign", "un-assigns a given trigger", wrtd_cmd_unassign },
{ "assign", "assigns a trigger", wrtd_cmd_trig_assign },
{ "unassign", "un-assigns a given trigger", wrtd_cmd_trig_unassign },
{ "show", "shows assigned triggers", wrtd_cmd_show },
{ "enable", "enables an output", wrtd_cmd_enable },
{ "disable", "disables an output", wrtd_cmd_disable },
{ "arm", "arms an output", wrtd_cmd_arm },
{ "disarm", "disarm an output", wrtd_cmd_disarm },
{ "mode", "set output mode output", wrtd_cmd_mode },
{ "dead_time", "set output dead time", wrtd_cmd_dead_time },
{ "reset_counters", "reset statistic counters", wrtd_cmd_reset_counters },
{ "log_level", "set log level", wrtd_cmd_log_level },
{ "pulse_width", "sets the output pulse width", wrtd_cmd_pulse_width },
{ "sw_trig", "forces a software trigger", wrtd_cmd_software_trigger },
{ "trig_enable", "enables a particular trigger", wrtd_cmd_trig_enable },
{ "trig_disable", "disables a particular trigger", wrtd_cmd_trig_disable },
{ "trig_stats", "shows per-trigger statistics", wrtd_cmd_trig_stats },
{ "trig_delay", "sets the delay for a particular trigger", wrtd_cmd_delay },
{ "trig_delay", "sets the delay for a particular trigger", wrtd_cmd_trig_delay },
{ "trig_cond_delay", "sets the delay for a particular trigger condition", wrtd_cmd_trig_cond_delay },
{ "trig_find", "retrieves a trigger entry based on its ID", wrtd_cmd_trig_find },
{ NULL }
};
......@@ -152,6 +177,18 @@ static int wrtd_cmd_enable(struct wrtd_node *wrtd, int output,
return wrtd_out_enable(wrtd, output, 1);
}
static int wrtd_cmd_arm(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
return wrtd_out_arm(wrtd, output, 1);
}
static int wrtd_cmd_disarm(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
return wrtd_out_arm(wrtd, output, 0);
}
static int wrtd_cmd_disable(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
......@@ -173,7 +210,7 @@ static int wrtd_cmd_state(struct wrtd_node *wrtd, int output,
return 0;
}
static int wrtd_cmd_delay(struct wrtd_node *wrtd, int output,
static int wrtd_cmd_trig_delay(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
struct wrtd_output_trigger_state trig;
......@@ -197,6 +234,54 @@ static int wrtd_cmd_delay(struct wrtd_node *wrtd, int output,
return wrtd_out_trig_delay_set(wrtd, &trig.handle, dtime);
}
static int wrtd_cmd_trig_cond_delay(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
struct wrtd_output_trigger_state trig;
uint64_t dtime = 0;
int index, err;
if (argc != 2 || argv[0] == NULL || argv[1] == NULL) {
fprintf(stderr,
"Missing arguments: trig_cond_delay <trig-index> <delay>\n");
return -1;
}
index = atoi(argv[0]);
/* Get a trigger */
err = wrtd_out_trig_state_get_by_index(wrtd, index, output, &trig);
if (err)
return err;
parse_delay(argv[1], &dtime);
return 0;
//return wrtd_out_trig_delay_set(wrtd, &trig.handle, dtime);
}
static int wrtd_cmd_mode(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
enum wrtd_trigger_mode mode;
if (argc != 1 || argv[0] == NULL) {
fprintf(stderr,
"Missing arguments: mode <auto/single>\n");
return -1;
}
parse_mode(argv[0], &mode);
return wrtd_out_trigger_mode_set(wrtd, output, mode);
}
static int wrtd_cmd_reset_counters(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
return wrtd_out_counters_reset(wrtd, output);
}
static int wrtd_cmd_pulse_width(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
......@@ -204,17 +289,56 @@ static int wrtd_cmd_pulse_width(struct wrtd_node *wrtd, int output,
if (argc != 1 || argv[0] == NULL) {
fprintf(stderr,
"Missing arguments: width <pulse width>\n");
"Missing arguments: pulse_width <pulse width>\n");
return -1;
}
/* Get a trigger */
parse_delay(argv[0], &dtime);
return wrtd_out_pulse_width_set(wrtd, output, dtime);
}
static int wrtd_cmd_assign(struct wrtd_node *wrtd, int output,
static int wrtd_cmd_dead_time(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
uint64_t dtime = 0;
if (argc != 1 || argv[0] == NULL) {
fprintf(stderr,
"Missing arguments: dead_time <dead time>\n");
return -1;
}
/* Get a trigger */
parse_delay(argv[0], &dtime);
return wrtd_out_dead_time_set(wrtd, output, dtime);
}
static int wrtd_cmd_log_level(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
int log_level;
if (argc < 1) {
fprintf(stderr,
"Missing arguments: log_level <all off executed missed filtered promisc>\n");
return -1;
}
parse_log_level(argv + 1, argc, &log_level);
return wrtd_out_log_level_set(wrtd, output, log_level);
}
static int wrtd_cmd_software_trigger(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
return -1;
}
static int wrtd_cmd_trig_assign(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
struct wrtd_trigger_handle h;
......@@ -240,7 +364,7 @@ static int wrtd_cmd_assign(struct wrtd_node *wrtd, int output,
return wrtd_out_trig_assign(wrtd, output, &h, &id_t, cond ? &id_cond : NULL);
}
static int wrtd_cmd_unassign(struct wrtd_node *wrtd, int output,
static int wrtd_cmd_trig_unassign(struct wrtd_node *wrtd, int output,
int argc, char *argv[])
{
struct wrtd_output_trigger_state trig;
......
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