summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjørn Mork <bjorn@mork.no>2011-09-28 20:31:42 +0200
committerBjørn Mork <bjorn@mork.no>2011-09-28 20:31:42 +0200
commita124f035ec1a5c4ee8347ca4881584fbedf6d1b1 (patch)
tree31ee93ff19bd62da416485adce8d308e50cc40cb /src
basic skeleton
Signed-off-by: Bjørn Mork <bjorn@mork.no>
Diffstat (limited to 'src')
-rw-r--r--src/Makefile5
-rw-r--r--src/wwan_ctl.c127
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;
+}