aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2016-02-19 20:22:12 +0000
committerDaniel Lezcano <daniel.lezcano@linaro.org>2016-02-19 21:04:57 +0000
commit5e659d7bfaf5c46dcff93d63c8252bf11d179c37 (patch)
tree89435f011d85d77a6f4669e164a26b2d97394bbc
parentb4eec7eb5e0408ecc0e450025dbb5ab3fe6cbc5c (diff)
Remove the selectedwindow options.
There is no logic behind the default window selection. The last option parsed set the default window. Instead of having a specific boolean set, use the first bit found in the flags for selecting the the windows. eg. powerdebug -s -g => flags = SENSOR_OPTION | GPIO_OPTION; => flags = 0x2 | 0x8 = 0x0a => flags = b01010000 => fsl(flags) = 2 => default window = 1 << fsl(flags) - 1 => default window = 1 << 2 - 1 => default window = 1 << 1 => default window = 2 = SENSOR_OPTION Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
-rw-r--r--display.c13
-rw-r--r--display.h4
-rw-r--r--powerdebug.c10
-rw-r--r--powerdebug.h1
4 files changed, 12 insertions, 16 deletions
diff --git a/display.c b/display.c
index ed010b3..eada839 100644
--- a/display.c
+++ b/display.c
@@ -21,6 +21,9 @@
#include <stdio.h>
#include <string.h>
+#define _GNU_SOURCE
+#include <strings.h>
+#undef _GNU_SOURCE
#include <stdlib.h>
#include <ctype.h>
#include <ncurses.h>
@@ -548,12 +551,12 @@ static int display_find_keystroke(int fd, void *data)
return 0;
}
-int display_init(int wdefault)
+int display_init(struct powerdebug_options *options)
{
int i, maxx, maxy;
size_t array_size = sizeof(windata) / sizeof(windata[0]);
- current_win = wdefault;
+ current_win = 1 << (ffs(options->flags & DEFAULT_OPTION) - 1);
if (mainloop_add(0, display_keystroke, NULL))
return -1;
@@ -605,13 +608,13 @@ int display_init(int wdefault)
if (!footer_win)
return -1;
- if (display_show_header(wdefault))
+ if (display_show_header(current_win))
return -1;
- if (display_show_footer(wdefault, NULL))
+ if (display_show_footer(current_win, NULL))
return -1;
- return display_refresh(wdefault, true);
+ return display_refresh(current_win, true);
}
int display_column_name(const char *line)
diff --git a/display.h b/display.h
index 8882918..d8f87bf 100644
--- a/display.h
+++ b/display.h
@@ -29,6 +29,8 @@ struct display_ops {
int (*change)(int keyvalue);
};
+struct powerdebug_options;
+
extern int display_print_line(int window, int line, char *str,
int bold, void *data);
extern void display_message(int window, char *buf);
@@ -37,7 +39,7 @@ extern int display_refresh_pad(int window);
extern int display_reset_cursor(int window);
extern void *display_get_row_data(int window);
-extern int display_init(int wdefault);
+extern int display_init(struct powerdebug_options *opt);
extern int display_register(int win, struct display_ops *ops);
extern int display_column_name(const char *line);
diff --git a/powerdebug.c b/powerdebug.c
index b626b05..b0d2ade 100644
--- a/powerdebug.c
+++ b/powerdebug.c
@@ -93,7 +93,6 @@ int getoptions(int argc, char *argv[], struct powerdebug_options *options)
memset(options, 0, sizeof(*options));
options->ticktime = 10;
- options->selectedwindow = -1;
while (1) {
int optindex = 0;
@@ -106,19 +105,15 @@ int getoptions(int argc, char *argv[], struct powerdebug_options *options)
switch (c) {
case 'r':
options->flags |= REGULATOR_OPTION;
- options->selectedwindow = REGULATOR;
break;
case 's':
options->flags |= SENSOR_OPTION;
- options->selectedwindow = SENSOR;
break;
case 'c':
options->flags |= CLOCK_OPTION;
- options->selectedwindow = CLOCK;
break;
case 'g':
options->flags |= GPIO_OPTION;
- options->selectedwindow = GPIO;
break;
case 'd':
options->flags |= DUMP_OPTION;
@@ -152,9 +147,6 @@ int getoptions(int argc, char *argv[], struct powerdebug_options *options)
if (!(options->flags & DEFAULT_OPTION))
options->flags |= DEFAULT_OPTION;
- if (options->selectedwindow == -1)
- options->selectedwindow = CLOCK;
-
return 0;
}
@@ -177,7 +169,7 @@ static int powerdebug_dump(struct powerdebug_options *options)
static int powerdebug_display(struct powerdebug_options *options)
{
- if (display_init(options->selectedwindow)) {
+ if (display_init(options)) {
printf("failed to initialize display\n");
return -1;
}
diff --git a/powerdebug.h b/powerdebug.h
index 2df0a27..3852ca8 100644
--- a/powerdebug.h
+++ b/powerdebug.h
@@ -35,7 +35,6 @@
struct powerdebug_options {
int flags;
unsigned int ticktime;
- int selectedwindow;
char *clkname;
};