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 392 DCB dcb;
393 393 #else
394 394 struct termios tios;
395   - speed_t speed;
396 395 int flags;
397 396 #endif
398 397 modbus_rtu_t *ctx_rtu = ctx->backend_data;
... ... @@ -445,74 +444,7 @@ static int _modbus_rtu_connect(modbus_t *ctx)
445 444 dcb = ctx_rtu->old_dcb;
446 445  
447 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 449 /* Data bits */
518 450 switch (ctx_rtu->data_bit) {
... ... @@ -606,116 +538,10 @@ static int _modbus_rtu_connect(modbus_t *ctx)
606 538 /* C_ISPEED Input baud (new interface)
607 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 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 545 close(ctx->s);
720 546 ctx->s = -1;
721 547 return -1;
... ...