]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
ldattach: always set line speed and format for N_GIGASET_M101
authorTilman Schmidt <tilman@imap.cc>
Thu, 9 Jul 2015 13:22:32 +0000 (15:22 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 15 Jul 2015 13:46:17 +0000 (15:46 +0200)
The Gigaset M101 exhibits particularly awkward and confusing behaviour
when the serial line speed isn't set to what the device expects:
Configuration mode detects the used speed and works anyway, but data
mode silently fails. Troubleshooting this is enormously time-consuming.

Spare the users this trouble by setting the line speed and format to
these devices' factory default values as long as the command line
doesn't say otherwise.

Signed-off-by: Tilman Schmidt <tilman@imap.cc>
sys-utils/ldattach.c

index 5317d22d8176f100ebbaa17b1fc10c6c59e926ce..9c1235d6794ffe57842086139c45c0b2a7a8282f 100644 (file)
@@ -365,6 +365,15 @@ int main(int argc, char **argv)
        if (ldisc < 0)
                ldisc = strtos32_or_err(argv[optind], _("invalid line discipline argument"));
 
+       /* ldisc specific option settings */
+       if (ldisc == N_GIGASET_M101) {
+               /* device specific defaults for line speed and data format */
+               if (speed == 0) speed = 115200;
+               if (bits == '-') bits = '8';
+               if (parity == '-') parity = 'n';
+               if (stop == '-') stop = '1';
+       }
+
        /* open device */
        dev = argv[optind + 1];
        if ((tty_fd = open(dev, O_RDWR | O_NOCTTY)) < 0)
@@ -447,12 +456,13 @@ int main(int argc, char **argv)
                }
        }
 
-       /* Attach the line discpline. */
+       /* Attach the line discipline. */
        if (ioctl(tty_fd, TIOCSETD, &ldisc) < 0)
                err(EXIT_FAILURE, _("cannot set line discipline"));
 
        dbg("line discipline set to %d", ldisc);
 
+       /* ldisc specific post-attach actions */
        if (ldisc == N_GSM0710)
                gsm0710_set_conf(tty_fd);