4
4
5
5
#define EDIT_BUFFER_SIZE 20
6
6
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 ;
10
11
11
12
void bindPrint (void )
12
13
{
@@ -112,27 +113,27 @@ void showFrequencies()
112
113
113
114
void CLI_buffer_reset (void )
114
115
{
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 ) );
118
119
}
119
120
120
121
uint8_t CLI_inline_edit (char c )
121
122
{
122
123
if (c == 0x7F || c == 0x08 ) { // Delete or Backspace
123
- if (CLI_buffer_needle > 0 ) {
124
+ if (CLI_buffer_position > 0 ) {
124
125
// 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 ;
127
128
128
129
// Redraw the output with last character erased
129
130
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 ++ ) {
131
132
Serial .write (CLI_buffer [i ]);
132
133
}
133
134
Serial .write (' ' );
134
135
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 ++ ) {
136
137
Serial .write (CLI_buffer [i ]);
137
138
}
138
139
} else {
@@ -144,9 +145,9 @@ uint8_t CLI_inline_edit(char c)
144
145
} else if (c == 0x0D ) { // Enter
145
146
return 1 ; // signal editing done
146
147
} else {
147
- if (CLI_buffer_needle < EDIT_BUFFER_SIZE ) {
148
+ if (CLI_buffer_position < EDIT_BUFFER_SIZE ) {
148
149
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
150
151
} else {
151
152
Serial .print ('\007' ); // bell
152
153
}
@@ -215,7 +216,7 @@ void handleCLImenu(char c)
215
216
}
216
217
} else { // we are inside the menu
217
218
if (CLI_inline_edit (c )) {
218
- if (CLI_buffer_needle == 0 ) { // no input - abort
219
+ if (CLI_buffer_position == 0 ) { // no input - abort
219
220
CLI_menu = -1 ;
220
221
CLI_menu_headers ();
221
222
} else {
@@ -230,6 +231,7 @@ void handleCLImenu(char c)
230
231
break ;
231
232
case 2 :
232
233
bind_data .rf_magic = value ;
234
+ CLI_magic_set = 1 ; // user wants specific magic, do not auto update
233
235
valid_input = 1 ;
234
236
break ;
235
237
case 3 :
@@ -282,7 +284,11 @@ void handleCLImenu(char c)
282
284
}
283
285
break ;
284
286
}
285
- if (!valid_input ) {
287
+ if (valid_input ) {
288
+ if (CLI_magic_set == 0 ) {
289
+ bind_data .rf_magic ++ ;
290
+ }
291
+ } else {
286
292
Serial .println ("\r\nInvalid input - discarded!\007" );
287
293
}
288
294
CLI_buffer_reset ();
@@ -298,7 +304,7 @@ void handleCLImenu(char c)
298
304
void handleCLI ()
299
305
{
300
306
CLI_menu = -1 ;
301
-
307
+ CLI_magic_set = 0 ;
302
308
CLI_menu_headers ();
303
309
while (CLI_menu != -2 ) { // LOCK user here until settings are saved
304
310
if (Serial .available ()) {
0 commit comments