From 8045fdfb09c2e3b466f371b2ab64ff01f9f7aec1 Mon Sep 17 00:00:00 2001 From: laforge Date: Fri, 20 Oct 2006 20:41:12 +0000 Subject: - some more gsmd / libgsmd code - use autotools for build process git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@94 99fdad57-331a-0410-800a-d7fa5415bdb3 --- src/gsmd/gsmd.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'src/gsmd/gsmd.c') diff --git a/src/gsmd/gsmd.c b/src/gsmd/gsmd.c index b77e54e..b617eb1 100644 --- a/src/gsmd/gsmd.c +++ b/src/gsmd/gsmd.c @@ -22,7 +22,7 @@ static int gsmd_test_atcb(struct gsmd_atcmd *cmd, void *ctx) { - printf("returned: `%s'\n", cmd->buf); + printf("`%s' returned `%s'\n", cmd->buf, cmd->resp); free(cmd); return 0; } @@ -34,10 +34,25 @@ static int gsmd_test(struct gsmd *gsmd) return atcmd_submit(gsmd, cmd); } +static int atcmd_test(struct gsmd *gsmd) +{ + struct gsmd_atcmd *cmd; + cmd = atcmd_fill("ATE0", 255, &gsmd_test_atcb, NULL); + return atcmd_submit(gsmd, cmd); +} + static int gsmd_initsettings(struct gsmd *gsmd) { + int rc; struct gsmd_atcmd *cmd; - //cmd = atcmd_fill("ATV1;+CRC=1;+CREG=2;+CLIP=1;+COLP=1", 255, &f + + cmd = atcmd_fill("ATV1", 255, &gsmd_test_atcb, NULL); + rc = atcmd_submit(gsmd, cmd); + if (rc < 0) + return rc; + + cmd = atcmd_fill("+CRC=1;+CREG=2;+CMEE=2;+CLIP=1;+COLP=1", 255, &gsmd_test_atcb, NULL); + return atcmd_submit(gsmd, cmd); } struct bdrt { @@ -85,6 +100,13 @@ static int set_baudrate(int fd, int baudrate) static struct gsmd g; +static int gsmd_initialize(struct gsmd *g) +{ + INIT_LLIST_HEAD(&g->users); + + return 0; +} + static struct option opts[] = { { "version", 0, NULL, 'V' }, { "daemon", 0, NULL, 'd' }, @@ -93,6 +115,19 @@ static struct option opts[] = { { "speed", 1, NULL, 's' }, }; +static void print_help(void) +{ + printf("gsmd - (C) 2006 by Harald Welte \n" + "This program is FREE SOFTWARE under the terms of GNU GPL\n\n" + "Usage:\n" + "\t-v\t--version\tDisplay program version\n" + "\t-d\t--daemon\tDeamonize\n" + "\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" + ); +} + int main(int argc, char **argv) { int fd, argch; @@ -102,7 +137,7 @@ int main(int argc, char **argv) char *device = "/dev/ttyUSB0"; /*FIXME: parse commandline, set daemonize, device, ... */ - while ((argch = getopt_long(argc, argv, "Vdhps:", opts, NULL)) != -1) { + while ((argch = getopt_long(argc, argv, "Vdhp:s:", opts, NULL)) != -1) { switch (argch) { case 'V': /* FIXME */ @@ -112,6 +147,8 @@ int main(int argc, char **argv) break; case 'h': /* FIXME */ + print_help(); + exit(0); break; case 'p': device = optarg; @@ -135,10 +172,16 @@ int main(int argc, char **argv) exit(1); } + if (gsmd_initialize(&g) < 0) { + fprintf(stderr, "internal error\n"); + exit(1); + } + if (atcmd_init(&g, fd) < 0) { fprintf(stderr, "can't initialize UART device\n"); exit(1); } + atcmd_drain(fd); if (usock_init(&g) < 0) { fprintf(stderr, "can't open unix socket\n"); @@ -155,7 +198,9 @@ int main(int argc, char **argv) setsid(); } + atcmd_test(&g); gsmd_test(&g); + gsmd_initsettings(&g); while (1) { int ret = gsmd_select_main(); -- cgit v1.2.3