diff options
author | Bjørn Mork <bjorn@mork.no> | 2011-09-28 20:31:42 +0200 |
---|---|---|
committer | Bjørn Mork <bjorn@mork.no> | 2011-09-28 20:31:42 +0200 |
commit | a124f035ec1a5c4ee8347ca4881584fbedf6d1b1 (patch) | |
tree | 31ee93ff19bd62da416485adce8d308e50cc40cb /src |
basic skeleton
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile | 5 | ||||
-rw-r--r-- | src/wwan_ctl.c | 127 |
2 files changed, 132 insertions, 0 deletions
diff --git a/src/Makefile b/src/Makefile new file mode 100644 index 0000000..41f1f80 --- /dev/null +++ b/src/Makefile @@ -0,0 +1,5 @@ +all: wwan_ctl + +wwan_ctl: wwan_ctl.c + gcc -o wwan_ctl wwan_ctl.c + diff --git a/src/wwan_ctl.c b/src/wwan_ctl.c new file mode 100644 index 0000000..b5690ed --- /dev/null +++ b/src/wwan_ctl.c @@ -0,0 +1,127 @@ +/* + +Copyright 2011 Bjørn Mork <bjorn@mork.no> + +License: GPLv2 + +*/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <sys/ioctl.h> +#include <stdarg.h> +#include <fcntl.h> +#include <errno.h> + + +/* default values for options */ +static char *supported[] = { "0bdb:1900", NULL }; +static int timeout = 10; /* read timeout */ +static char wwan_apn[] = ""; +static int wwan_poweroff = 1; /* power off radio when interface goes down? */ +static char wwan_gpstty[] = ""; +static int wwan_mode = 1; /* Radio mode 1=auto, 5=GSM, 6=UTRAN */ +static int wwan_roaming_ok = 0; /* Disallow roaming by default */ +static int wwan_debug = 0; +static char wwan_cfg_file[] = "/etc/default/wwan_ctl"; + +void dbg(const char *str, ...) +{ + va_list args; + va_start(args, str); + vfprintf(stderr, str, args); +} + +void fatal(const char *str, ...) +{ + va_list args; + va_start(args, str); + vfprintf(stderr, str, args); + exit(2); +} + +int wwan_readcfg(void) +{ + return -1; +} + +int wwan_checkdevice(void) +{ + return -1; +} + +char *wwan_getgpsport(void) +{ + return ""; +} + +char *wwan_getmgmt(void) +{ + return "/dev/ttyACM0"; +} + +int wwan_verify_pin(void) +{ + return -1; +} + +int wwan_enable_gps(void) +{ + return -1; +} + +int wwan_connected(void) +{ + return -1; +} + +int wwan_configure_account(void) +{ + return -1; +} + +int wwan_power_radio_on(void) +{ + return -1; +} + +int wwan_connect(void) +{ + return -1; +} + +int wwan_disconnect(void) +{ + return -1; +} + + + +int main (int argc, char **argv) +{ + int mgmt_fd; + ssize_t n, c; + char buf[512], *p; + + if (argc != 1) + fatal("usage: %s gps|start|stop\n", argv[0]); + + if ((mgmt_fd = open(wwan_getmgmt(), O_RDWR|O_SYNC)) < 0) + fatal("failed to open '%s': %d %m\n", wwan_getmgmt(), errno); + + 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; + c += n; + } + buf[c] = 0; + + dbg("%s(): read %d bytes: %s", __FUNCTION__, c, buf); + + close (mgmt_fd); + return 0; +} |