diff options
Diffstat (limited to 'src/gsmd')
-rw-r--r-- | src/gsmd/gsmd.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/gsmd/gsmd.c b/src/gsmd/gsmd.c index 94f0f73..1743400 100644 --- a/src/gsmd/gsmd.c +++ b/src/gsmd/gsmd.c @@ -101,7 +101,7 @@ static struct bdrt bdrts[] = { { 115200, B115200 }, }; -static int set_baudrate(int fd, int baudrate) +static int set_baudrate(int fd, int baudrate, int hwflow) { int i; u_int32_t bd = 0; @@ -126,6 +126,11 @@ static int set_baudrate(int fd, int baudrate) if (i < 0) return i; + if (hwflow) + ti.c_cflag |= CRTSCTS; + else + ti.c_cflag &= ~CRTSCTS; + return tcsetattr(fd, 0, &ti); } @@ -146,6 +151,7 @@ static struct option opts[] = { { "device", 1, NULL, 'p' }, { "speed", 1, NULL, 's' }, { "logfile", 1, NULL, 'l' }, + { "hwflow", 0, NULL, 'F' }, { "leak-report", 0, NULL, 'L' }, { 0, 0, 0, 0 } }; @@ -160,6 +166,8 @@ static void print_help(void) "\t-h\t--help\t\tDisplay this help message\n" "\t-p dev\t--device dev\tSpecify serial device to be used\n" "\t-s spd\t--speed spd\tSpecify speed in bps (9600,38400,115200,...)\n" + "\t-F\t--hwflow\tHardware Flow Control (RTS/CTS)\n" + "\t-L\t--leak-report\tLeak Report of talloc memory allocator\n" "\t-l file\t--logfile file\tSpecify a logfile to log to\n" ); } @@ -184,6 +192,7 @@ int main(int argc, char **argv) int daemonize = 0; int bps = 115200; + int hwflow = 0; char *device = "/dev/ttyUSB0"; char *logfile = "syslog"; @@ -195,7 +204,7 @@ int main(int argc, char **argv) gsmd_tallocs = talloc_named_const(NULL, 1, "GSMD"); /*FIXME: parse commandline, set daemonize, device, ... */ - while ((argch = getopt_long(argc, argv, "VLdhp:s:l:", opts, NULL)) != -1) { + while ((argch = getopt_long(argc, argv, "FVLdhp:s:l:", opts, NULL)) != -1) { switch (argch) { case 'V': /* FIXME */ @@ -203,6 +212,9 @@ int main(int argc, char **argv) case 'L': talloc_enable_leak_report_full(); break; + case 'F': + hwflow = 1; + break; case 'd': daemonize = 1; break; @@ -234,7 +246,7 @@ int main(int argc, char **argv) exit(1); } - if (set_baudrate(fd, bps) < 0) { + if (set_baudrate(fd, bps, hwflow) < 0) { fprintf(stderr, "can't set baudrate\n"); exit(1); } |