Add Tabs for various features
diff --git a/powerdebug.c b/powerdebug.c
index 87e60bc..8c84932 100644
--- a/powerdebug.c
+++ b/powerdebug.c
@@ -20,8 +20,14 @@
int numregulators;
int dump;
int highlighted_row;
+int selectedwindow = -1;
double ticktime = 10.0; /* in seconds */
+char *win_names[TOTAL_FEATURE_WINS] = {
+ "Regulators",
+ "Clocks",
+ "Sensors" };
+
int init_regulator_ds(void)
{
DIR *regdir;
@@ -228,17 +234,20 @@
int main(int argc, char **argv)
{
- int c;
- int firsttime = 1;
+ int c, i;
+ int firsttime[TOTAL_FEATURE_WINS];
int enter_hit = 0;
int regulators = 0, sensors = 0, clocks = 0, verbose = 0;
int r_share = 0, s_share = 0, c_share = 0; //%age share of the win size
+ for (i = 0; i < TOTAL_FEATURE_WINS; i++)
+ firsttime[i] = 1;
+
/*
* Options:
- * -r, --regulator : regulator
- * -s, --sensor : sensors
- * -c, --clock : clocks
+ * -r, --regulator : regulator
+ * -s, --sensor : sensors
+ * -c, --clock : clocks
* -t, --time : ticktime
* -d, --dump : dump
* -v, --verbose : verbose
@@ -250,9 +259,9 @@
while (1) {
int optindex = 0;
static struct option long_options[] = {
- {"regulator", 0, 0, 'r'},
- {"sensor", 0, 0, 's'},
- {"clock", 0, 0, 'c'},
+ {"regulator", 0, 0, 'r'},
+ {"sensor", 0, 0, 's'},
+ {"clock", 0, 0, 'c'},
{"time", 0, 0, 't'},
{"dump", 0, 0, 'd'},
{"verbose", 0, 0, 'v'},
@@ -266,15 +275,18 @@
break;
switch (c) {
- case 'r':
- regulators = 1;
- break;
- case 's':
- sensors = 1;
- break;
- case 'c':
- clocks = 1;
- break;
+ case 'r':
+ regulators = 1;
+ selectedwindow = REGULATOR;
+ break;
+ case 's':
+ sensors = 1;
+ selectedwindow = SENSOR;
+ break;
+ case 'c':
+ clocks = 1;
+ selectedwindow = CLOCK;
+ break;
case 't':
ticktime = strtod(optarg, NULL);
break;
@@ -300,11 +312,13 @@
}
}
+ if (!dump && (regulators || clocks || sensors)) {
+ fprintf(stderr, "Option supported only in dump mode (-d)\n");
+ usage(argv);
+ }
- /* Need atleast one option specified */
- if (!regulators && !sensors && !clocks) {
- usage(argv);
- }
+ if (!dump)
+ selectedwindow = REGULATOR;
init_regulator_ds();
@@ -312,10 +326,9 @@
int key = 0;
struct timeval tval;
fd_set readfds;
- int row = 1;
if (!dump) {
- if(firsttime)
+ if(firsttime[0])
init_curses();
create_windows();
show_header();
@@ -332,29 +345,25 @@
c_share = 100 - (r_share + s_share);
}
- if (regulators) {
+ if (selectedwindow == REGULATOR) {
read_regulator_info();
if (!dump) {
- int orig_r_share = r_share;
-
- row = create_regulator_win(row,
- numregulators + 2,
- &r_share);
- c_share += (orig_r_share - r_share);
+ create_selectedwindow();
show_regulator_info(verbose);
}
else
print_regulator_info(verbose);
}
- if (clocks) {
- if (firsttime)
+ if (selectedwindow == CLOCK) {
+ if (firsttime[CLOCK]) {
init_clock_details();
+ firsttime[CLOCK] = 0;
+ }
if (!dump) {
int hrow;
- //giv big no. in second arg as of now
- row = create_clock_win(row, 100, &c_share);
+ create_selectedwindow();
hrow = read_and_print_clock_info(verbose,
highlighted_row,
enter_hit);
@@ -364,9 +373,9 @@
dump_clock_info(verbose);
}
- if (sensors) {
+ if (selectedwindow == SENSOR) {
if (!dump) {
- row = create_sensor_win(row, 100, &s_share);//big no. as of now
+ create_selectedwindow();
print_sensor_header();
}
else
@@ -386,14 +395,36 @@
if (key) {
char keychar;
- int keystroke = fgetc(stdin);
+ //int keystroke = fgetc(stdin);
+ int keystroke = getch();
if (keystroke == EOF)
exit(0);
- if (keystroke == 9)
- highlighted_row++;
+ if (keystroke == KEY_RIGHT || keystroke == 9)
+ selectedwindow++;
+
+ if (keystroke == KEY_LEFT || keystroke == 353)
+ selectedwindow--;
+
+ if (selectedwindow >= TOTAL_FEATURE_WINS)
+ selectedwindow = 0;
+
+ if (selectedwindow < 0)
+ selectedwindow = TOTAL_FEATURE_WINS - 1;
+
+ if (selectedwindow == CLOCK) {
+ if (keystroke == KEY_DOWN)
+ highlighted_row++;
+ if (keystroke == KEY_UP && highlighted_row > 0)
+ highlighted_row--;
+ }
keychar = toupper(keystroke);
+
+ //killall_windows(1); fini_curses();
+ //printf("key entered %d:%c\n", keystroke, keychar);
+ //exit(1);
+
if (keystroke == 13)
enter_hit = 1;
@@ -402,8 +433,6 @@
if (keychar == 'R')
ticktime = 3;
}
- if (firsttime)
- firsttime = 0;
}
exit(0);