Commit e8866fd4 authored by Miguel Jimenez Lopez's avatar Miguel Jimenez Lopez

irq-demo: Add a new user parameter to control sleep period of DEMO

parent 465bb76a
......@@ -19,17 +19,19 @@
#define TEST_FMC_DIO_COUNT -1
#define TEST_FMC_DIO_PERIOD 100000000
#define STATS_LOG_PATH "./.irq-demo.log"
#define PROCESS_SLEEP_US 1
#define PROCESS_SLEEP_US 100000
#define MAX_FMC_DIO_PATH 100
struct _user_args {
char fmc_dev_path[MAX_FMC_DIO_PATH];
unsigned int irq_period;
unsigned int sleep_period_us;
int verbose;
};
typedef struct _user_args * user_args;
static void demo_irq_process_loop(fmc_dio_device fmc_dev, stats_engine engine);
static void demo_irq_process_loop(fmc_dio_device fmc_dev, stats_engine engine,
unsigned int sleep_us);
static void process_timestamps_to_engine(stats_engine engine, struct usr_timestamp *ts,
unsigned int nts);
......
......@@ -127,7 +127,7 @@ int main(int argc, char *argv[])
global_fmc_dev = dev;
/* Main loop of IRQ demo (until user requests to exit) */
demo_irq_process_loop(dev, sengine);
demo_irq_process_loop(dev, sengine, user_arguments->sleep_period_us);
/* Exit sequence */
......@@ -151,7 +151,8 @@ out_log:
return ret;
}
static void demo_irq_process_loop(fmc_dio_device fmc_dev, stats_engine engine)
static void demo_irq_process_loop(fmc_dio_device fmc_dev, stats_engine engine,
unsigned int sleep_us)
{
struct usr_timestamp *ts;
unsigned int nts;
......@@ -167,7 +168,7 @@ static void demo_irq_process_loop(fmc_dio_device fmc_dev, stats_engine engine)
do {
ret = get_utc_ts_from_fmc_dio_device(fmc_dev, TEST_FMC_DIO_CH, &ts, &nts);
process_timestamps_to_engine(engine, ts, nts);
usleep(PROCESS_SLEEP_US);
usleep(sleep_us);
user_stop = check_user_stop();
} while(!user_stop);
}
......@@ -200,6 +201,7 @@ static int parse_user_arguments(int argc, char *argv[], user_args parsed_args)
int opt;
parsed_args->irq_period = TEST_FMC_DIO_PERIOD;
parsed_args->sleep_period_us = PROCESS_SLEEP_US;
parsed_args->verbose = 0;
if(argc == 1) {
......@@ -207,7 +209,7 @@ static int parse_user_arguments(int argc, char *argv[], user_args parsed_args)
return 1;
}
while((opt = getopt(argc, argv, "hvf:p:")) != -1) {
while((opt = getopt(argc, argv, "hvf:p:s:")) != -1) {
switch(opt) {
case 'f':
strncpy(parsed_args->fmc_dev_path, optarg, MAX_FMC_DIO_PATH-1);
......@@ -215,6 +217,9 @@ static int parse_user_arguments(int argc, char *argv[], user_args parsed_args)
case 'p':
sscanf(optarg, "%d", &parsed_args->irq_period);
break;
case 's':
sscanf(optarg, "%d", &parsed_args->sleep_period_us);
break;
case 'v':
parsed_args->verbose = 1;
break;
......@@ -245,6 +250,7 @@ static void show_help(void)
printf("%s -f <FMC DIO device path> [options]\n", PROG_NAME);
printf("\t -f <path> \tSet FMC DIO device path\n");
printf("\t -p <period> \tSet IRQ period (in nanoseconds)\n");
printf("\t -s <sleep us> \tSet Sleep period in microseconds\n");
printf("\t -v \t\tEnable verbose mode\n");
printf("\t -h \t\tShow this help message\n");
printf("Please, press 'q' key + ENTER or CNTRL+C to exit from the demo tool\n");
......
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