Commit fa2079859d82965c5be417cc3985df141d720e0a

Authored by Stéphane Raimbault
1 parent dd45f19a

Remove constraints on baud rate values

Showing 1 changed file with 3 additions and 177 deletions
src/modbus-rtu.c
@@ -392,7 +392,6 @@ static int _modbus_rtu_connect(modbus_t *ctx) @@ -392,7 +392,6 @@ static int _modbus_rtu_connect(modbus_t *ctx)
392 DCB dcb; 392 DCB dcb;
393 #else 393 #else
394 struct termios tios; 394 struct termios tios;
395 - speed_t speed;  
396 int flags; 395 int flags;
397 #endif 396 #endif
398 modbus_rtu_t *ctx_rtu = ctx->backend_data; 397 modbus_rtu_t *ctx_rtu = ctx->backend_data;
@@ -445,74 +444,7 @@ static int _modbus_rtu_connect(modbus_t *ctx) @@ -445,74 +444,7 @@ static int _modbus_rtu_connect(modbus_t *ctx)
445 dcb = ctx_rtu->old_dcb; 444 dcb = ctx_rtu->old_dcb;
446 445
447 /* Speed setting */ 446 /* Speed setting */
448 - switch (ctx_rtu->baud) {  
449 - case 110:  
450 - dcb.BaudRate = CBR_110;  
451 - break;  
452 - case 300:  
453 - dcb.BaudRate = CBR_300;  
454 - break;  
455 - case 600:  
456 - dcb.BaudRate = CBR_600;  
457 - break;  
458 - case 1200:  
459 - dcb.BaudRate = CBR_1200;  
460 - break;  
461 - case 2400:  
462 - dcb.BaudRate = CBR_2400;  
463 - break;  
464 - case 4800:  
465 - dcb.BaudRate = CBR_4800;  
466 - break;  
467 - case 9600:  
468 - dcb.BaudRate = CBR_9600;  
469 - break;  
470 - case 14400:  
471 - dcb.BaudRate = CBR_14400;  
472 - break;  
473 - case 19200:  
474 - dcb.BaudRate = CBR_19200;  
475 - break;  
476 - case 38400:  
477 - dcb.BaudRate = CBR_38400;  
478 - break;  
479 - case 57600:  
480 - dcb.BaudRate = CBR_57600;  
481 - break;  
482 - case 115200:  
483 - dcb.BaudRate = CBR_115200;  
484 - break;  
485 - case 230400:  
486 - /* CBR_230400 - not defined */  
487 - dcb.BaudRate = 230400;  
488 - break;  
489 - case 250000:  
490 - dcb.BaudRate = 250000;  
491 - break;  
492 - case 256000:  
493 - dcb.BaudRate = 256000;  
494 - break;  
495 - case 460800:  
496 - dcb.BaudRate = 460800;  
497 - break;  
498 - case 500000:  
499 - dcb.BaudRate = 500000;  
500 - break;  
501 - case 921600:  
502 - dcb.BaudRate = 921600;  
503 - break;  
504 - case 1000000:  
505 - dcb.BaudRate = 1000000;  
506 - break;  
507 - default:  
508 - dcb.BaudRate = CBR_9600;  
509 - if (ctx->debug) {  
510 - fprintf(stderr,  
511 - "WARNING Unknown baud rate %d for %s (B9600 used)\n",  
512 - ctx_rtu->baud,  
513 - ctx_rtu->device);  
514 - }  
515 - } 447 + dcb.BaudRate = ctx_rtu->baud;
516 448
517 /* Data bits */ 449 /* Data bits */
518 switch (ctx_rtu->data_bit) { 450 switch (ctx_rtu->data_bit) {
@@ -606,116 +538,10 @@ static int _modbus_rtu_connect(modbus_t *ctx) @@ -606,116 +538,10 @@ static int _modbus_rtu_connect(modbus_t *ctx)
606 /* C_ISPEED Input baud (new interface) 538 /* C_ISPEED Input baud (new interface)
607 C_OSPEED Output baud (new interface) 539 C_OSPEED Output baud (new interface)
608 */ 540 */
609 - switch (ctx_rtu->baud) {  
610 - case 110:  
611 - speed = B110;  
612 - break;  
613 - case 300:  
614 - speed = B300;  
615 - break;  
616 - case 600:  
617 - speed = B600;  
618 - break;  
619 - case 1200:  
620 - speed = B1200;  
621 - break;  
622 - case 2400:  
623 - speed = B2400;  
624 - break;  
625 - case 4800:  
626 - speed = B4800;  
627 - break;  
628 - case 9600:  
629 - speed = B9600;  
630 - break;  
631 - case 19200:  
632 - speed = B19200;  
633 - break;  
634 - case 38400:  
635 - speed = B38400;  
636 - break;  
637 -#ifdef B57600  
638 - case 57600:  
639 - speed = B57600;  
640 - break;  
641 -#endif  
642 -#ifdef B115200  
643 - case 115200:  
644 - speed = B115200;  
645 - break;  
646 -#endif  
647 -#ifdef B230400  
648 - case 230400:  
649 - speed = B230400;  
650 - break;  
651 -#endif  
652 -#ifdef B460800  
653 - case 460800:  
654 - speed = B460800;  
655 - break;  
656 -#endif  
657 -#ifdef B500000  
658 - case 500000:  
659 - speed = B500000;  
660 - break;  
661 -#endif  
662 -#ifdef B576000  
663 - case 576000:  
664 - speed = B576000;  
665 - break;  
666 -#endif  
667 -#ifdef B921600  
668 - case 921600:  
669 - speed = B921600;  
670 - break;  
671 -#endif  
672 -#ifdef B1000000  
673 - case 1000000:  
674 - speed = B1000000;  
675 - break;  
676 -#endif  
677 -#ifdef B1152000  
678 - case 1152000:  
679 - speed = B1152000;  
680 - break;  
681 -#endif  
682 -#ifdef B1500000  
683 - case 1500000:  
684 - speed = B1500000;  
685 - break;  
686 -#endif  
687 -#ifdef B2500000  
688 - case 2500000:  
689 - speed = B2500000;  
690 - break;  
691 -#endif  
692 -#ifdef B3000000  
693 - case 3000000:  
694 - speed = B3000000;  
695 - break;  
696 -#endif  
697 -#ifdef B3500000  
698 - case 3500000:  
699 - speed = B3500000;  
700 - break;  
701 -#endif  
702 -#ifdef B4000000  
703 - case 4000000:  
704 - speed = B4000000;  
705 - break;  
706 -#endif  
707 - default:  
708 - speed = B9600;  
709 - if (ctx->debug) {  
710 - fprintf(stderr,  
711 - "WARNING Unknown baud rate %d for %s (B9600 used)\n",  
712 - ctx_rtu->baud,  
713 - ctx_rtu->device);  
714 - }  
715 - }  
716 541
717 /* Set the baud rate */ 542 /* Set the baud rate */
718 - if ((cfsetispeed(&tios, speed) < 0) || (cfsetospeed(&tios, speed) < 0)) { 543 + if ((cfsetispeed(&tios, ctx_rtu->baud) < 0) ||
  544 + (cfsetospeed(&tios, ctx_rtu->baud) < 0)) {
719 close(ctx->s); 545 close(ctx->s);
720 ctx->s = -1; 546 ctx->s = -1;
721 return -1; 547 return -1;