diff -u -p setserial.brain.c setserial.c --- setserial.brain.c Mon Oct 29 16:49:10 2001 +++ setserial.c Mon Oct 29 17:01:54 2001 @@ -77,6 +77,7 @@ struct serial_type_struct { #define CMD_FLOW_ON 16 #define CMD_RX_TMOUT 17 #define CMD_DMA_CHAN 18 +#define CMD_WMSR 19 #define FLAG_CAN_INVERT 0x0001 #define FLAG_NEED_ARG 0x0002 @@ -126,9 +127,15 @@ struct flag_type_table { CMD_RX_TMOUT, "rx_timeout", 0, 0, 0, FLAG_NEED_ARG, CMD_DMA_CHAN, "dma_channel", 0, 0, 0, FLAG_NEED_ARG, #endif + CMD_WMSR, "wmsr", 0, 0, 0, FLAG_NEED_ARG, 0, 0, 0, 0, 0, 0, }; +/* Kernel header will take ages before beeing updated in distributions */ +#ifndef TIOCSERSETWMSR +#define TIOCSERSETWMSR 0x5461 /* Set custom write in Modem Status Register */ +#endif /* TIOCSERSETWMSR */ + char *serial_type(int id) { int i; @@ -603,6 +610,15 @@ void set_serial(char *device, char ** ar set_hayesesp(fd, p->cmd, atonum(*arg++)); break; #endif + case CMD_WMSR: + { + unsigned char wmsr = atonum(*arg++); + if (ioctl(fd, TIOCSERSETWMSR, &wmsr) < 0) { + perror("Cannot set wmsr"); + exit(1); + } + } + break; default: fprintf(stderr, "Internal error: unhandled cmd #%d\n", p->cmd); exit(1);