diff options
author | Bjørn Mork <bjorn@mork.no> | 2011-09-28 21:10:21 +0200 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2011-09-28 21:10:21 +0200 |
commit | 3d569cbac033a5bd315c743df4c768cd5ac0e20f (patch) | |
tree | f4534d9e4d92d8377b8fa1405574e9ef29222065 /src | |
parent | a124f035ec1a5c4ee8347ca4881584fbedf6d1b1 (diff) |
have to use termios to get a sane result
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Diffstat (limited to 'src')
-rw-r--r-- | src/wwan_ctl.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/wwan_ctl.c b/src/wwan_ctl.c index b5690ed..87bedf2 100644 --- a/src/wwan_ctl.c +++ b/src/wwan_ctl.c @@ -1,9 +1,6 @@ /* - Copyright 2011 Bjørn Mork <bjorn@mork.no> - License: GPLv2 - */ #include <stdlib.h> @@ -13,7 +10,7 @@ License: GPLv2 #include <stdarg.h> #include <fcntl.h> #include <errno.h> - +#include <termios.h> /* default values for options */ static char *supported[] = { "0bdb:1900", NULL }; @@ -58,7 +55,7 @@ char *wwan_getgpsport(void) char *wwan_getmgmt(void) { - return "/dev/ttyACM0"; + return "/dev/ttyACM1"; } int wwan_verify_pin(void) @@ -97,12 +94,12 @@ int wwan_disconnect(void) } - int main (int argc, char **argv) { int mgmt_fd; ssize_t n, c; char buf[512], *p; + struct termios t; if (argc != 1) fatal("usage: %s gps|start|stop\n", argv[0]); @@ -110,11 +107,17 @@ int main (int argc, char **argv) if ((mgmt_fd = open(wwan_getmgmt(), O_RDWR|O_SYNC)) < 0) fatal("failed to open '%s': %d %m\n", wwan_getmgmt(), errno); + tcgetattr(mgmt_fd, &t); + t.c_lflag &= ~(ICANON | ECHO); + tcsetattr(mgmt_fd, TCSADRAIN, &t); + sprintf(buf, "%s", "ATI\r\n"); write(mgmt_fd, buf, strlen(buf)); p = buf; c = 0; while (n = read(mgmt_fd, p, sizeof(buf) - c)) { + p[n] = 0; + fprintf(stderr, "%s", p); p += n; c += n; } |