diff --git a/examples/Example_Usage.md b/examples/Example_Usage.md index 767a99f..5554679 100644 --- a/examples/Example_Usage.md +++ b/examples/Example_Usage.md @@ -171,7 +171,7 @@ Some Keyboard Shortcuts have been implemented for testing to see how users like esc or arrow keys - ncurses menu q - quit c - toggle compact mode -h - toggle event history +h - cycle event history short, long, or off z - toggle console payloads a - toggle call alert beep 4 - force privacy/scrambler key assertion over enc identifiers (dmr and nxdn) diff --git a/include/dsd.h b/include/dsd.h index 894a916..281b998 100644 --- a/include/dsd.h +++ b/include/dsd.h @@ -387,9 +387,9 @@ typedef struct pa_simple *pulse_digi_dev_outR; char pa_input_idx[100]; char pa_output_idx[100]; - int use_ncurses_terminal; - int ncurses_compact; - int ncurses_history; + uint8_t use_ncurses_terminal; + uint8_t ncurses_compact; + uint8_t ncurses_history; int reset_state; int payload; char output_name[1024]; diff --git a/src/dsd_ncurses_handler.c b/src/dsd_ncurses_handler.c index 4e9129a..be998dc 100644 --- a/src/dsd_ncurses_handler.c +++ b/src/dsd_ncurses_handler.c @@ -201,10 +201,10 @@ uint8_t ncurses_input_handler(dsd_opts * opts, dsd_state * state, int c) else opts->call_alert = 1; } - if (c == 104) //'h' key, toggle history + if (c == 104) //'h' key, cycle history off, short, long { - if (opts->ncurses_history == 1) opts->ncurses_history = 0; - else opts->ncurses_history = 1; + opts->ncurses_history++; + opts->ncurses_history %= 3; } if (c == 113) //'q' key, quit diff --git a/src/dsd_ncurses_printer.c b/src/dsd_ncurses_printer.c index 745b0de..5148363 100644 --- a/src/dsd_ncurses_printer.c +++ b/src/dsd_ncurses_printer.c @@ -1590,13 +1590,15 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) attroff(COLOR_PAIR(3)); } //only print event history if enabled - if (opts->ncurses_history == 1) + attron(COLOR_PAIR(4)); //cyan for history + printw ("--Latest Event History ([|])---Slot %d (\\)---Cycle (h)-Short/Long/Off----------\n", state->eh_slot+1); + if (opts->ncurses_history != 0) { - attron(COLOR_PAIR(4)); //cyan for history - printw ("--Latest Event History ([|])---Slot %d (\\)-------------------------------------\n", state->eh_slot+1); for (uint16_t i = (state->eh_index+1); i < (state->eh_index+11); i++) { - + uint16_t string_size = 71; //short uniform size that doesn't exceed the fence + if (opts->ncurses_history == 2) + string_size = 1999; //full string size uint8_t slot = state->eh_slot; uint8_t color_pair = state->event_history_s[slot].Event_History_Items[i%255].color_pair; //this is the color pair assignment for this line attron(COLOR_PAIR(4)); @@ -1605,8 +1607,8 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) sprintf (text_string, "%s", "BUMBLEBEETUNA"); if (strncmp(text_string, state->event_history_s[slot].Event_History_Items[i%255].event_string, 13) != 0) { - memcpy(text_string, state->event_history_s[slot].Event_History_Items[i%255].event_string, 71*sizeof(char)); - text_string[71] = 0; //terminate string + memcpy(text_string, state->event_history_s[slot].Event_History_Items[i%255].event_string, string_size*sizeof(char)); + text_string[string_size] = 0; //terminate string printw ("| #%03d ", i%255); attron(COLOR_PAIR(color_pair)); //this is where the custom color switch occurs for the event_string printw ("%s\n", text_string); @@ -1648,10 +1650,11 @@ ncursesPrinter (dsd_opts * opts, dsd_state * state) } } - printw ("------------------------------------------------------------------------------\n"); - attroff(COLOR_PAIR(4)); //cyan for history } + printw ("------------------------------------------------------------------------------\n"); + attroff(COLOR_PAIR(4)); //cyan for history + refresh(); //handle input