ldattach: always set line speed and format for N_GIGASET_M101

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>
This commit is contained in:
Tilman Schmidt 2015-07-09 15:22:32 +02:00 committed by Karel Zak
parent b5225af344
commit 5687494ae0
1 changed files with 11 additions and 1 deletions

View 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);