68
68
#include "kiss_frame.h"
69
69
#include "sock.h"
70
70
#include "dtime_now.h"
71
+ #include "audio.h" // for DEFAULT_TXDELAY, etc.
71
72
72
73
73
74
// TODO: define in one place, use everywhere.
@@ -394,6 +395,27 @@ int main (int argc, char *argv[])
394
395
*
395
396
*--------------------------------------------------------------------*/
396
397
398
+ static int parse_number (char * str , int de_fault )
399
+ {
400
+ int n ;
401
+
402
+ while (isspace (* str )) {
403
+ str ++ ;
404
+ }
405
+ if (strlen (str ) == 0 ) {
406
+ text_color_set (DW_COLOR_ERROR );
407
+ dw_printf ("Missing number for KISS command. Using default %d.\n" , de_fault );
408
+ return (de_fault );
409
+ }
410
+ n = atoi (str );
411
+ if (n < 0 || n > 255 ) { // must fit in a byte.
412
+ text_color_set (DW_COLOR_ERROR );
413
+ dw_printf ("Number for KISS command is out of range 0-255. Using default %d.\n" , de_fault );
414
+ return (de_fault );
415
+ }
416
+ return (n );
417
+ }
418
+
397
419
static void process_input (char * stuff )
398
420
{
399
421
char * p ;
@@ -435,24 +457,23 @@ static void process_input (char *stuff)
435
457
436
458
switch (* p ) {
437
459
case 'd' : // txDelay, 10ms units
438
- // TODO: should check for range 0 - 255.
439
- value = atoi (p + 1 );
460
+ value = parse_number (p + 1 , DEFAULT_TXDELAY );
440
461
send_to_kiss_tnc (chan , KISS_CMD_TXDELAY , & value , 1 );
441
462
break ;
442
463
case 'p' : // Persistence
443
- value = atoi (p + 1 );
464
+ value = parse_number (p + 1 , DEFAULT_PERSIST );
444
465
send_to_kiss_tnc (chan , KISS_CMD_PERSISTENCE , & value , 1 );
445
466
break ;
446
467
case 's' : // Slot time, 10ms units
447
- value = atoi (p + 1 );
468
+ value = parse_number (p + 1 , DEFAULT_SLOTTIME );
448
469
send_to_kiss_tnc (chan , KISS_CMD_SLOTTIME , & value , 1 );
449
470
break ;
450
- case 't' : // txTelay , 10ms units
451
- value = atoi (p + 1 );
471
+ case 't' : // txTail , 10ms units
472
+ value = parse_number (p + 1 , DEFAULT_TXTAIL );
452
473
send_to_kiss_tnc (chan , KISS_CMD_TXTAIL , & value , 1 );
453
474
break ;
454
475
case 'f' : // Full duplex
455
- value = atoi (p + 1 );
476
+ value = parse_number (p + 1 , 0 );
456
477
send_to_kiss_tnc (chan , KISS_CMD_FULLDUPLEX , & value , 1 );
457
478
break ;
458
479
case 'h' : // set Hardware
@@ -512,7 +533,7 @@ static void send_to_kiss_tnc (int chan, int cmd, char *data, int dlen)
512
533
}
513
534
if (dlen < 0 || dlen > (int )(sizeof (temp )- 1 )) {
514
535
text_color_set (DW_COLOR_ERROR );
515
- dw_printf ("ERROR - Invalid data length %d - must be in range 0 to %d.\n" , dlen , sizeof (temp )- 1 );
536
+ dw_printf ("ERROR - Invalid data length %d - must be in range 0 to %d.\n" , dlen , ( int )( sizeof (temp )- 1 ) );
516
537
dlen = sizeof (temp )- 1 ;
517
538
}
518
539
@@ -531,7 +552,8 @@ static void send_to_kiss_tnc (int chan, int cmd, char *data, int dlen)
531
552
// Might need to delay when not using interactive input.
532
553
533
554
if (using_tcp ) {
534
- SOCK_SEND (server_sock , (char * )kissed , klen );
555
+ int rc = SOCK_SEND (server_sock , (char * )kissed , klen );
556
+ (void )rc ;
535
557
}
536
558
else {
537
559
serial_port_write (serial_fd , (char * )kissed , klen );
0 commit comments