Skip to content

Commit bbbe512

Browse files
committed
Autoincrement magic when doing changes via cli to force rebind.
1 parent 5f0f929 commit bbbe512

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

dialog.h

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,10 @@
44

55
#define EDIT_BUFFER_SIZE 20
66

7-
int8_t CLI_menu = 0;
8-
char CLI_buffer[EDIT_BUFFER_SIZE+1];
9-
uint8_t CLI_buffer_needle = 0;
7+
int8_t CLI_menu = 0;
8+
char CLI_buffer[EDIT_BUFFER_SIZE+1];
9+
uint8_t CLI_buffer_position = 0;
10+
bool CLI_magic_set = 0;
1011

1112
void bindPrint(void)
1213
{
@@ -112,27 +113,27 @@ void showFrequencies()
112113

113114
void CLI_buffer_reset(void)
114115
{
115-
// Empty buffer and reset needle
116-
CLI_buffer_needle = 0;
117-
memset(CLI_buffer, 0, sizeof CLI_buffer);
116+
// Empty buffer and reset position
117+
CLI_buffer_position = 0;
118+
memset(CLI_buffer, 0, sizeof(CLI_buffer));
118119
}
119120

120121
uint8_t CLI_inline_edit(char c)
121122
{
122123
if (c == 0x7F || c == 0x08) { // Delete or Backspace
123-
if (CLI_buffer_needle > 0) {
124+
if (CLI_buffer_position > 0) {
124125
// Remove last char from the buffer
125-
CLI_buffer_needle--;
126-
CLI_buffer[CLI_buffer_needle] = 0;
126+
CLI_buffer_position--;
127+
CLI_buffer[CLI_buffer_position] = 0;
127128

128129
// Redraw the output with last character erased
129130
Serial.write('\r');
130-
for (uint8_t i = 0; i < CLI_buffer_needle; i++) {
131+
for (uint8_t i = 0; i < CLI_buffer_position; i++) {
131132
Serial.write(CLI_buffer[i]);
132133
}
133134
Serial.write(' ');
134135
Serial.write('\r');
135-
for (uint8_t i = 0; i < CLI_buffer_needle; i++) {
136+
for (uint8_t i = 0; i < CLI_buffer_position; i++) {
136137
Serial.write(CLI_buffer[i]);
137138
}
138139
} else {
@@ -144,9 +145,9 @@ uint8_t CLI_inline_edit(char c)
144145
} else if(c == 0x0D) { // Enter
145146
return 1; // signal editing done
146147
} else {
147-
if (CLI_buffer_needle < EDIT_BUFFER_SIZE) {
148+
if (CLI_buffer_position < EDIT_BUFFER_SIZE) {
148149
Serial.write(c);
149-
CLI_buffer[CLI_buffer_needle++] = c; // Store char in the buffer
150+
CLI_buffer[CLI_buffer_position++] = c; // Store char in the buffer
150151
} else {
151152
Serial.print('\007'); // bell
152153
}
@@ -215,7 +216,7 @@ void handleCLImenu(char c)
215216
}
216217
} else { // we are inside the menu
217218
if (CLI_inline_edit(c)) {
218-
if (CLI_buffer_needle == 0) { // no input - abort
219+
if (CLI_buffer_position == 0) { // no input - abort
219220
CLI_menu = -1;
220221
CLI_menu_headers();
221222
} else {
@@ -230,6 +231,7 @@ void handleCLImenu(char c)
230231
break;
231232
case 2:
232233
bind_data.rf_magic = value;
234+
CLI_magic_set = 1; // user wants specific magic, do not auto update
233235
valid_input = 1;
234236
break;
235237
case 3:
@@ -282,7 +284,11 @@ void handleCLImenu(char c)
282284
}
283285
break;
284286
}
285-
if (!valid_input) {
287+
if (valid_input) {
288+
if (CLI_magic_set == 0) {
289+
bind_data.rf_magic++;
290+
}
291+
} else {
286292
Serial.println("\r\nInvalid input - discarded!\007");
287293
}
288294
CLI_buffer_reset();
@@ -298,7 +304,7 @@ void handleCLImenu(char c)
298304
void handleCLI()
299305
{
300306
CLI_menu = -1;
301-
307+
CLI_magic_set = 0;
302308
CLI_menu_headers();
303309
while (CLI_menu != -2) { // LOCK user here until settings are saved
304310
if (Serial.available()) {

0 commit comments

Comments
 (0)