Commit fa2079859d82965c5be417cc3985df141d720e0a
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; |