@ -402,6 +402,36 @@ my_atof(const char *p)
return x ;
return x ;
}
}
//
// Function used for search substring v in list
// Example need search parameter "center" in "start|stop|center|span|cw" getStringIndex return 2
// If not found return -1
// Used for easy parse command arguments
static int getStringIndex ( char * v , const char * list ) {
int i = 0 ;
while ( 1 ) {
char * p = v ;
while ( 1 ) {
char c = * list ; if ( c = = ' | ' ) c = 0 ;
if ( c = = * p + + ) {
// Found, return index
if ( c = = 0 ) return i ;
list + + ; // Compare next symbol
continue ;
}
break ; // Not equal, break
}
// Set new substring ptr
while ( 1 ) {
// End of string, not found
if ( * list = = 0 ) return - 1 ;
if ( * list + + = = ' | ' ) break ;
}
i + + ;
}
return - 1 ;
}
static void cmd_offset ( BaseSequentialStream * chp , int argc , char * argv [ ] )
static void cmd_offset ( BaseSequentialStream * chp , int argc , char * argv [ ] )
{
{
if ( argc ! = 1 ) {
if ( argc ! = 1 ) {
@ -672,19 +702,17 @@ static void (*sample_func)(float *gamma) = calculate_gamma;
static void cmd_sample ( BaseSequentialStream * chp , int argc , char * argv [ ] )
static void cmd_sample ( BaseSequentialStream * chp , int argc , char * argv [ ] )
{
{
if ( argc = = 1 ) {
if ( argc ! = 1 ) goto usage ;
if ( strcmp ( argv [ 0 ] , " ref " ) = = 0 ) {
// 0 1 2
sample_func = fetch_amplitude_ref ;
static const char cmd_sample_list [ ] = " gamma|ampl|ref " ;
return ;
switch ( getStringIndex ( argv [ 1 ] , cmd_sample_list ) ) {
} else if ( strcmp ( argv [ 0 ] , " ampl " ) = = 0 ) {
case 0 : sample_func = calculate_gamma ; return ;
sample_func = fetch_amplitude ;
case 1 : sample_func = fetch_amplitude ; return ;
return ;
case 2 : sample_func = fetch_amplitude_ref ; return ;
} else if ( strcmp ( argv [ 0 ] , " gamma " ) = = 0 ) {
default : break ;
sample_func = calculate_gamma ;
return ;
}
}
}
shell_printf ( chp , " usage: sample {gamma|ampl|ref} \r \n " ) ;
usage :
shell_printf ( chp , " usage: sample {%s} \r \n " , cmd_sample_list ) ;
}
}
config_t config = {
config_t config = {
@ -1022,21 +1050,15 @@ static void cmd_sweep(BaseSequentialStream *chp, int argc, char *argv[])
uint32_t value1 = 0 ;
uint32_t value1 = 0 ;
if ( argc > = 1 ) value0 = my_atoui ( argv [ 0 ] ) ;
if ( argc > = 1 ) value0 = my_atoui ( argv [ 0 ] ) ;
if ( argc > = 2 ) value1 = my_atoui ( argv [ 1 ] ) ;
if ( argc > = 2 ) value1 = my_atoui ( argv [ 1 ] ) ;
# if MAX_FREQ_TYPE!=5
# error "Sweep mode possibly changed, check cmd_sweep function"
# endif
// Parse sweep {start|stop|center|span|cw} {freq(Hz)}
// Parse sweep {start|stop|center|span|cw} {freq(Hz)}
// get enum ST_START, ST_STOP, ST_CENTER, ST_SPAN, ST_CW
static const char sweep_cmd [ ] = " start|stop|center|span|cw " ;
if ( argc = = 2 & & value0 = = 0 ) {
if ( argc = = 2 & & value0 = = 0 ) {
int type ;
int type = getStringIndex ( argv [ 0 ] , sweep_cmd ) ;
if ( strcmp ( argv [ 0 ] , " start " ) = = 0 )
if ( type = = - 1 )
type = ST_START ;
else if ( strcmp ( argv [ 0 ] , " stop " ) = = 0 )
type = ST_STOP ;
else if ( strcmp ( argv [ 0 ] , " center " ) = = 0 )
type = ST_CENTER ;
else if ( strcmp ( argv [ 0 ] , " span " ) = = 0 )
type = ST_SPAN ;
else if ( strcmp ( argv [ 0 ] , " cw " ) = = 0 )
type = ST_CW ;
else
goto usage ;
goto usage ;
set_sweep_frequency ( type , value1 ) ;
set_sweep_frequency ( type , value1 ) ;
return ;
return ;
@ -1049,7 +1071,7 @@ static void cmd_sweep(BaseSequentialStream *chp, int argc, char *argv[])
return ;
return ;
usage :
usage :
shell_printf ( chp , " usage: sweep {start(Hz)} [stop(Hz)] \r \n " \
shell_printf ( chp , " usage: sweep {start(Hz)} [stop(Hz)] \r \n " \
" \t sweep { start|stop|center|span|cw} {freq(Hz)}\r \n " ) ;
" \t sweep { %s} {freq(Hz)}\r \n " , sweep_cmd ) ;
}
}
@ -1069,13 +1091,14 @@ eterm_copy(int dst, int src)
memcpy ( cal_data [ dst ] , cal_data [ src ] , sizeof cal_data [ dst ] ) ;
memcpy ( cal_data [ dst ] , cal_data [ src ] , sizeof cal_data [ dst ] ) ;
}
}
#if 0
const struct open_model {
const struct open_model {
float c0 ;
float c0 ;
float c1 ;
float c1 ;
float c2 ;
float c2 ;
float c3 ;
float c3 ;
} open_model = { 50 , 0 , - 300 , 27 } ;
} open_model = { 50 , 0 , - 300 , 27 } ;
# endif
#if 0
#if 0
static void
static void
@ -1405,51 +1428,33 @@ static void cmd_cal(BaseSequentialStream *chp, int argc, char *argv[])
shell_printf ( chp , " \r \n " ) ;
shell_printf ( chp , " \r \n " ) ;
return ;
return ;
}
}
// 0 1 2 3 4 5 6 7 8 9 10
char * cmd = argv [ 0 ] ;
static const char cmd_cal_list [ ] = " load|open|short|thru|isoln|done|on|off|reset|data|in " ;
if ( strcmp ( cmd , " load " ) = = 0 ) {
switch ( getStringIndex ( argv [ 0 ] , cmd_cal_list ) ) {
cal_collect ( CAL_LOAD ) ;
case 0 : cal_collect ( CAL_LOAD ) ; return ;
} else if ( strcmp ( cmd , " open " ) = = 0 ) {
case 1 : cal_collect ( CAL_OPEN ) ; return ;
cal_collect ( CAL_OPEN ) ;
case 2 : cal_collect ( CAL_SHORT ) ; return ;
} else if ( strcmp ( cmd , " short " ) = = 0 ) {
case 3 : cal_collect ( CAL_THRU ) ; return ;
cal_collect ( CAL_SHORT ) ;
case 4 : cal_collect ( CAL_ISOLN ) ; return ;
} else if ( strcmp ( cmd , " thru " ) = = 0 ) {
case 5 : cal_done ( ) ; return ;
cal_collect ( CAL_THRU ) ;
case 6 : cal_status | = CALSTAT_APPLY ; redraw_request | = REDRAW_CAL_STATUS ; return ;
} else if ( strcmp ( cmd , " isoln " ) = = 0 ) {
case 7 : cal_status & = ~ CALSTAT_APPLY ; redraw_request | = REDRAW_CAL_STATUS ; return ;
cal_collect ( CAL_ISOLN ) ;
case 8 : cal_status = 0 ; redraw_request | = REDRAW_CAL_STATUS ; return ;
} else if ( strcmp ( cmd , " done " ) = = 0 ) {
case 9 :
cal_done ( ) ;
return ;
} else if ( strcmp ( cmd , " on " ) = = 0 ) {
cal_status | = CALSTAT_APPLY ;
redraw_request | = REDRAW_CAL_STATUS ;
return ;
} else if ( strcmp ( cmd , " off " ) = = 0 ) {
cal_status & = ~ CALSTAT_APPLY ;
redraw_request | = REDRAW_CAL_STATUS ;
return ;
} else if ( strcmp ( cmd , " reset " ) = = 0 ) {
cal_status = 0 ;
redraw_request | = REDRAW_CAL_STATUS ;
return ;
} else if ( strcmp ( cmd , " data " ) = = 0 ) {
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_LOAD ] [ 0 ] [ 0 ] , cal_data [ CAL_LOAD ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_LOAD ] [ 0 ] [ 0 ] , cal_data [ CAL_LOAD ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_OPEN ] [ 0 ] [ 0 ] , cal_data [ CAL_OPEN ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_OPEN ] [ 0 ] [ 0 ] , cal_data [ CAL_OPEN ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_SHORT ] [ 0 ] [ 0 ] , cal_data [ CAL_SHORT ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_SHORT ] [ 0 ] [ 0 ] , cal_data [ CAL_SHORT ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_THRU ] [ 0 ] [ 0 ] , cal_data [ CAL_THRU ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_THRU ] [ 0 ] [ 0 ] , cal_data [ CAL_THRU ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_ISOLN ] [ 0 ] [ 0 ] , cal_data [ CAL_ISOLN ] [ 0 ] [ 1 ] ) ;
shell_printf ( chp , " %f %f \r \n " , cal_data [ CAL_ISOLN ] [ 0 ] [ 0 ] , cal_data [ CAL_ISOLN ] [ 0 ] [ 1 ] ) ;
return ;
return ;
} else if ( strcmp ( cmd , " in " ) = = 0 ) {
case 10 :
int s = 0 ;
cal_interpolate ( ( argc > 1 ) ? my_atoi ( argv [ 1 ] ) : 0 ) ;
if ( argc > 1 )
s = my_atoi ( argv [ 1 ] ) ;
cal_interpolate ( s ) ;
redraw_request | = REDRAW_CAL_STATUS ;
redraw_request | = REDRAW_CAL_STATUS ;
return ;
return ;
} else {
default : break ;
shell_printf ( chp , " usage: cal [load|open|short|thru|isoln|done|reset|on|off|in] \r \n " ) ;
return ;
}
}
shell_printf ( chp , " usage: cal [%s] \r \n " , cmd_cal_list ) ;
}
}
static void cmd_save ( BaseSequentialStream * chp , int argc , char * argv [ ] )
static void cmd_save ( BaseSequentialStream * chp , int argc , char * argv [ ] )
@ -1577,11 +1582,6 @@ float get_trace_refpos(int t)
return trace [ t ] . refpos ;
return trace [ t ] . refpos ;
}
}
typedef struct {
char * tracename ;
uint8_t type ;
} type_list ;
static void cmd_trace ( BaseSequentialStream * chp , int argc , char * argv [ ] )
static void cmd_trace ( BaseSequentialStream * chp , int argc , char * argv [ ] )
{
{
int t ;
int t ;
@ -1614,38 +1614,32 @@ static void cmd_trace(BaseSequentialStream *chp, int argc, char *argv[])
shell_printf ( chp , " %d %s %s \r \n " , t , type , channel ) ;
shell_printf ( chp , " %d %s %s \r \n " , t , type , channel ) ;
return ;
return ;
}
}
static const type_list t_list [ ] = {
# if MAX_TRACE_TYPE!=12
{ " logmag " , TRC_LOGMAG } ,
# error "Trace type enum possibly changed, check cmd_trace function"
{ " phase " , TRC_PHASE } ,
# endif
{ " delay " , TRC_DELAY } ,
// enum TRC_LOGMAG, TRC_PHASE, TRC_DELAY, TRC_SMITH, TRC_POLAR, TRC_LINEAR, TRC_SWR, TRC_REAL, TRC_IMAG, TRC_R, TRC_X, TRC_OFF
{ " smith " , TRC_SMITH } ,
static const char cmd_type_list [ ] = " logmag|phase|delay|smith|polar|linear|swr|real|imag|r|x|off " ;
{ " polar " , TRC_POLAR } ,
int type = getStringIndex ( argv [ 1 ] , cmd_type_list ) ;
{ " linear " , TRC_LINEAR } ,
if ( type > = 0 ) {
{ " swr " , TRC_SWR } ,
set_trace_type ( t , type ) ;
{ " real " , TRC_REAL } ,
{ " imag " , TRC_IMAG } ,
{ " r " , TRC_R } ,
{ " x " , TRC_X } ,
{ " off " , TRC_OFF } ,
} ;
for ( uint16_t i = 0 ; i < sizeof ( t_list ) / sizeof ( type_list ) ; i + + ) {
if ( strcmp ( argv [ 1 ] , t_list [ i ] . tracename ) = = 0 ) {
set_trace_type ( t , t_list [ i ] . type ) ;
goto check_ch_num ;
goto check_ch_num ;
}
}
}
// 0 1
if ( strcmp ( argv [ 1 ] , " scale " ) = = 0 & & argc > = 3 ) {
static const char cmd_scale_ref_list [ ] = " scale|refpos " ;
if ( argc > = 3 ) {
switch ( getStringIndex ( argv [ 1 ] , cmd_scale_ref_list ) ) {
case 0 :
//trace[t].scale = my_atof(argv[2]);
//trace[t].scale = my_atof(argv[2]);
set_trace_scale ( t , my_atof ( argv [ 2 ] ) ) ;
set_trace_scale ( t , my_atof ( argv [ 2 ] ) ) ;
goto exit ;
goto exit ;
} else if ( strcmp ( argv [ 1 ] , " refpos " ) = = 0 & & argc > = 3 ) {
case 1 :
//trace[t].refpos = my_atof(argv[2]);
//trace[t].refpos = my_atof(argv[2]);
set_trace_refpos ( t , my_atof ( argv [ 2 ] ) ) ;
set_trace_refpos ( t , my_atof ( argv [ 2 ] ) ) ;
goto exit ;
goto exit ;
} else {
default :
goto usage ;
goto usage ;
}
}
}
check_ch_num :
check_ch_num :
if ( argc > 2 ) {
if ( argc > 2 ) {
int src = my_atoi ( argv [ 2 ] ) ;
int src = my_atoi ( argv [ 2 ] ) ;
@ -1656,8 +1650,8 @@ static void cmd_trace(BaseSequentialStream *chp, int argc, char *argv[])
exit :
exit :
return ;
return ;
usage :
usage :
shell_printf ( chp , " trace {0|1|2|3|all} [ logmag|phase|polar|smith|linear|delay|swr|real|imag|r|x|off ] [src]\r \n " \
shell_printf ( chp , " trace {0|1|2|3|all} [ %s ] [src]\r \n " \
" trace {0|1|2|3} { scale|refpos} {value}\r \n " ) ;
" trace {0|1|2|3} { %s} {value}\r \n " , cmd_type_list , cmd_scale_ref_list ) ;
}
}
@ -1716,17 +1710,11 @@ static void cmd_marker(BaseSequentialStream *chp, int argc, char *argv[])
redraw_request | = REDRAW_MARKER ;
redraw_request | = REDRAW_MARKER ;
return ;
return ;
}
}
if ( argc > 1 ) {
static const char cmd_marker_list [ ] = " on|off " ;
if ( strcmp ( argv [ 1 ] , " off " ) = = 0 ) {
switch ( getStringIndex ( argv [ 1 ] , cmd_marker_list ) ) {
markers [ t ] . enabled = FALSE ;
case 0 : markers [ t ] . enabled = TRUE ; active_marker = t ; redraw_request | = REDRAW_MARKER ; return ;
if ( active_marker = = t )
case 1 : markers [ t ] . enabled = FALSE ; if ( active_marker = = t ) active_marker = - 1 ; redraw_request | = REDRAW_MARKER ; return ;
active_marker = - 1 ;
default :
redraw_request | = REDRAW_MARKER ;
} else if ( strcmp ( argv [ 1 ] , " on " ) = = 0 ) {
markers [ t ] . enabled = TRUE ;
active_marker = t ;
redraw_request | = REDRAW_MARKER ;
} else {
// select active marker and move to index
// select active marker and move to index
markers [ t ] . enabled = TRUE ;
markers [ t ] . enabled = TRUE ;
int index = my_atoi ( argv [ 1 ] ) ;
int index = my_atoi ( argv [ 1 ] ) ;
@ -1734,11 +1722,10 @@ static void cmd_marker(BaseSequentialStream *chp, int argc, char *argv[])
markers [ t ] . frequency = frequencies [ index ] ;
markers [ t ] . frequency = frequencies [ index ] ;
active_marker = t ;
active_marker = t ;
redraw_request | = REDRAW_MARKER ;
redraw_request | = REDRAW_MARKER ;
}
}
return ;
return ;
}
usage :
usage :
shell_printf ( chp , " marker [n] [ off|{index}]\r \n " ) ;
shell_printf ( chp , " marker [n] [ %s|{index}]\r \n " , cmd_marker_list ) ;
}
}
static void cmd_touchcal ( BaseSequentialStream * chp , int argc , char * argv [ ] )
static void cmd_touchcal ( BaseSequentialStream * chp , int argc , char * argv [ ] )
@ -1814,33 +1801,24 @@ static void cmd_transform(BaseSequentialStream *chp, int argc, char *argv[])
if ( argc = = 0 ) {
if ( argc = = 0 ) {
goto usage ;
goto usage ;
}
}
// 0 1 2 3 4 5 6 7
static const char cmd_transform_list [ ] = " on|off|impulse|step|bandpass|minimum|normal|maximum " ;
for ( i = 0 ; i < argc ; i + + ) {
for ( i = 0 ; i < argc ; i + + ) {
char * cmd = argv [ i ] ;
switch ( getStringIndex ( argv [ i ] , cmd_transform_list ) ) {
if ( strcmp ( cmd , " on " ) = = 0 ) {
case 0 : set_domain_mode ( DOMAIN_TIME ) ; return ;
set_domain_mode ( DOMAIN_TIME ) ;
case 1 : set_domain_mode ( DOMAIN_FREQ ) ; return ;
} else if ( strcmp ( cmd , " off " ) = = 0 ) {
case 2 : set_timedomain_func ( TD_FUNC_LOWPASS_IMPULSE ) ; return ;
set_domain_mode ( DOMAIN_FREQ ) ;
case 3 : set_timedomain_func ( TD_FUNC_LOWPASS_STEP ) ; return ;
} else if ( strcmp ( cmd , " impulse " ) = = 0 ) {
case 4 : set_timedomain_func ( TD_FUNC_BANDPASS ) ; return ;
set_timedomain_func ( TD_FUNC_LOWPASS_IMPULSE ) ;
case 5 : set_timedomain_window ( TD_WINDOW_MINIMUM ) ; return ;
} else if ( strcmp ( cmd , " step " ) = = 0 ) {
case 6 : set_timedomain_window ( TD_WINDOW_NORMAL ) ; return ;
set_timedomain_func ( TD_FUNC_LOWPASS_STEP ) ;
case 7 : set_timedomain_window ( TD_WINDOW_MAXIMUM ) ; return ;
} else if ( strcmp ( cmd , " bandpass " ) = = 0 ) {
default : goto usage ;
set_timedomain_func ( TD_FUNC_BANDPASS ) ;
} else if ( strcmp ( cmd , " minimum " ) = = 0 ) {
set_timedomain_window ( TD_WINDOW_MINIMUM ) ;
} else if ( strcmp ( cmd , " normal " ) = = 0 ) {
set_timedomain_window ( TD_WINDOW_NORMAL ) ;
} else if ( strcmp ( cmd , " maximum " ) = = 0 ) {
set_timedomain_window ( TD_WINDOW_MAXIMUM ) ;
} else {
goto usage ;
}
}
}
}
return ;
return ;
usage :
usage :
shell_printf ( chp , " usage: transform { on|off|impulse|step|bandpass|minimum|normal|maximum} [...]\r \n " ) ;
shell_printf ( chp , " usage: transform {%s} [...] \r \n " , cmd_transform_list ) ;
}
}
static void cmd_test ( BaseSequentialStream * chp , int argc , char * argv [ ] )
static void cmd_test ( BaseSequentialStream * chp , int argc , char * argv [ ] )
@ -1989,17 +1967,13 @@ static void cmd_vbat(BaseSequentialStream *chp, int argc, char *argv[])
static void cmd_threads ( BaseSequentialStream * chp , int argc , char * argv [ ] ) {
static void cmd_threads ( BaseSequentialStream * chp , int argc , char * argv [ ] ) {
static const char * states [ ] = { CH_STATE_NAMES } ;
static const char * states [ ] = { CH_STATE_NAMES } ;
thread_t * tp ;
thread_t * tp ;
( void ) argc ;
( void ) argv ;
( void ) argv ;
if ( argc > 0 ) {
chprintf ( chp , " stklimit stack addr refs prio state name " VNA_SHELL_NEWLINE_STR ) ;
shellUsage ( chp , " threads " ) ;
return ;
}
chprintf ( chp , " stklimit stack addr refs prio state name \r \n " SHELL_NEWLINE_STR ) ;
tp = chRegFirstThread ( ) ;
tp = chRegFirstThread ( ) ;
do {
do {
uint32_t stklimit = ( uint32_t ) tp - > wabase ;
uint32_t stklimit = ( uint32_t ) tp - > wabase ;
shell_printf ( chp , " %08x %08x %08x %4u %4u %9s %12s " SHELL_NEWLINE_STR,
shell_printf ( chp , " %08x %08x %08x %4u %4u %9s %12s " VNA_SHELL_NEWLINE_STR ,
stklimit , ( uint32_t ) tp - > ctx . sp , ( uint32_t ) tp ,
stklimit , ( uint32_t ) tp - > ctx . sp , ( uint32_t ) tp ,
( uint32_t ) tp - > refs - 1 , ( uint32_t ) tp - > prio , states [ tp - > state ] ,
( uint32_t ) tp - > refs - 1 , ( uint32_t ) tp - > prio , states [ tp - > state ] ,
tp - > name = = NULL ? " " : tp - > name ) ;
tp - > name = = NULL ? " " : tp - > name ) ;
@ -2055,7 +2029,7 @@ static const VNAShellCommand commands[] =
{ " threshold " , cmd_threshold } ,
{ " threshold " , cmd_threshold } ,
{ " help " , cmd_help } ,
{ " help " , cmd_help } ,
# ifdef ENABLE_THREADS_COMMAND
# ifdef ENABLE_THREADS_COMMAND
// { "threads" , cmd_threads },
{ " threads " , cmd_threads } ,
# endif
# endif
{ NULL , NULL }
{ NULL , NULL }
} ;
} ;
@ -2089,7 +2063,7 @@ static int VNAShell_readLine(char *line, int max_size){
// Return 0 only if stream not active
// Return 0 only if stream not active
if ( streamRead ( shell_stream , & c , 1 ) = = 0 )
if ( streamRead ( shell_stream , & c , 1 ) = = 0 )
return 0 ;
return 0 ;
// Backspace
// Backspace or Delete
if ( c = = 8 | | c = = 0x7f ) {
if ( c = = 8 | | c = = 0x7f ) {
if ( ptr ! = line ) {
if ( ptr ! = line ) {
static const char backspace [ ] = { 0x08 , 0x20 , 0x08 , 0x00 } ;
static const char backspace [ ] = { 0x08 , 0x20 , 0x08 , 0x00 } ;
@ -2162,12 +2136,12 @@ static THD_WORKING_AREA(waThread2, /* cmd_* max stack size + alpha */442);
THD_FUNCTION ( myshellThread , p ) {
THD_FUNCTION ( myshellThread , p ) {
( void ) p ;
( void ) p ;
chRegSetThreadName ( " shell " ) ;
chRegSetThreadName ( " shell " ) ;
char line[ VNA_SHELL_MAX_LENGTH ] ;
char shell_ line[ VNA_SHELL_MAX_LENGTH ] ;
shell_printf ( shell_stream , VNA_SHELL_NEWLINE_STR " NanoVNA Shell " VNA_SHELL_NEWLINE_STR ) ;
shell_printf ( shell_stream , VNA_SHELL_NEWLINE_STR " NanoVNA Shell " VNA_SHELL_NEWLINE_STR ) ;
while ( true ) {
while ( true ) {
shell_printf ( shell_stream , VNA_SHELL_PROMPT_STR ) ;
shell_printf ( shell_stream , VNA_SHELL_PROMPT_STR ) ;
if ( VNAShell_readLine ( line, VNA_SHELL_MAX_LENGTH ) )
if ( VNAShell_readLine ( shell_ line, VNA_SHELL_MAX_LENGTH ) )
VNAShell_executeLine ( line) ;
VNAShell_executeLine ( shell_ line) ;
else // Putting a delay in order to avoid an endless loop trying to read an unavailable stream.
else // Putting a delay in order to avoid an endless loop trying to read an unavailable stream.
osalThreadSleepMilliseconds ( 100 ) ;
osalThreadSleepMilliseconds ( 100 ) ;
}
}
@ -2266,12 +2240,12 @@ int main(void)
myshellThread , NULL ) ;
myshellThread , NULL ) ;
chThdWait ( shelltp ) ;
chThdWait ( shelltp ) ;
# else
# else
char line[ VNA_SHELL_MAX_LENGTH ] ;
char shell_ line[ VNA_SHELL_MAX_LENGTH ] ;
shell_printf ( shell_stream , VNA_SHELL_NEWLINE_STR " NanoVNA Shell " VNA_SHELL_NEWLINE_STR ) ;
shell_printf ( shell_stream , VNA_SHELL_NEWLINE_STR " NanoVNA Shell " VNA_SHELL_NEWLINE_STR ) ;
do {
do {
shell_printf ( shell_stream , VNA_SHELL_PROMPT_STR ) ;
shell_printf ( shell_stream , VNA_SHELL_PROMPT_STR ) ;
if ( VNAShell_readLine ( line, VNA_SHELL_MAX_LENGTH ) )
if ( VNAShell_readLine ( shell_ line, VNA_SHELL_MAX_LENGTH ) )
VNAShell_executeLine ( line) ;
VNAShell_executeLine ( shell_ line) ;
else
else
chThdSleepMilliseconds ( 200 ) ;
chThdSleepMilliseconds ( 200 ) ;
} while ( SDU1 . config - > usbp - > state = = USB_ACTIVE ) ;
} while ( SDU1 . config - > usbp - > state = = USB_ACTIVE ) ;