diff options
author | laforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-08-17 10:01:25 +0000 |
---|---|---|
committer | laforge <laforge@99fdad57-331a-0410-800a-d7fa5415bdb3> | 2007-08-17 10:01:25 +0000 |
commit | 5f80949dc6856f8bb16b3b2405886c5c1b7d6c91 (patch) | |
tree | 7ecc925e26f5985b9d12205e3fd869c704d2022f /src/gsmd | |
parent | ad708e46d7a8adc45aa8b9ec2ff7b110303f708f (diff) |
Add Broadcom BCM2132 vendor plugin (Alex Osborne)
git-svn-id: http://svn.openmoko.org/trunk/src/target/gsm@2734 99fdad57-331a-0410-800a-d7fa5415bdb3
Diffstat (limited to 'src/gsmd')
-rw-r--r-- | src/gsmd/Makefile.am | 6 | ||||
-rw-r--r-- | src/gsmd/machine.c | 2 | ||||
-rw-r--r-- | src/gsmd/vendor_bcm.c | 112 |
3 files changed, 119 insertions, 1 deletions
diff --git a/src/gsmd/Makefile.am b/src/gsmd/Makefile.am index bdb39d0..9ac45ee 100644 --- a/src/gsmd/Makefile.am +++ b/src/gsmd/Makefile.am @@ -21,7 +21,8 @@ plugin_LTLIBRARIES = libgsmd-machine_generic.la \ libgsmd-machine_tihtc.la \ libgsmd-vendor_ti.la \ libgsmd-vendor_tihtc.la \ - libgsmd-vendor_qc.la + libgsmd-vendor_qc.la \ + libgsmd-vendor_bcm.la libgsmd_machine_generic_la_SOURCES = machine_generic.c libgsmd_machine_generic_la_LDFLAGS = -module @@ -34,5 +35,8 @@ libgsmd_vendor_tihtc_la_SOURCES = vendor_tihtc.c libgsmd_vendor_tihtc_la_LDFLAGS = -module libgsmd_vendor_qc_la_SOURCES = vendor_qc.c libgsmd_vendor_qc_la_LDFLAGS = -module +libgsmd_vendor_bcm_la_SOURCES = vendor_bcm.c +libgsmd_vendor_bcm_la_LDFLAGS = -module + noinst_HEADERS = gsmd.h diff --git a/src/gsmd/machine.c b/src/gsmd/machine.c index ab12a6e..8a5d5c9 100644 --- a/src/gsmd/machine.c +++ b/src/gsmd/machine.c @@ -100,6 +100,7 @@ struct machines { { "HTC Himalaya", "tihtc", "tihtc" }, { "HTC Magician", "tihtc", "tihtc" }, { "HTC Universal", "generic", "qc" }, + { "Palm Treo 650", "generic", "bcm" }, { NULL, NULL, NULL }, }; @@ -157,6 +158,7 @@ int gsmd_machine_plugin_init(struct gsmd *g, char *machine_name, char *vendor_na gsmd_vendor_plugin_load("ti"); gsmd_vendor_plugin_load("tihtc"); gsmd_vendor_plugin_load("qc"); + gsmd_vendor_plugin_load("bcm"); } return rc; diff --git a/src/gsmd/vendor_bcm.c b/src/gsmd/vendor_bcm.c new file mode 100644 index 0000000..e8e1584 --- /dev/null +++ b/src/gsmd/vendor_bcm.c @@ -0,0 +1,112 @@ +/* Broadcom [BCM2132] gsmd plugin + * + * Written by Alex Osborne <bobofdoom@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include <stdlib.h> +#include <unistd.h> +#include <string.h> +#include <stdio.h> +#include <errno.h> + +#include "gsmd.h" + +#include <gsmd/gsmd.h> +#include <gsmd/usock.h> +#include <gsmd/event.h> +#include <gsmd/talloc.h> +#include <gsmd/extrsp.h> +#include <gsmd/atcmd.h> +#include <gsmd/vendorplugin.h> +#include <gsmd/unsolicited.h> + +static int mrdy_parse(char *buf, int len, const char *param, + struct gsmd *g) +{ + int status = atoi(param); + DEBUGP("entering mrdy_parse param=`%s'\n", param); + + switch (status) { + case 1: + DEBUGP("Module is ready.\n"); + break; + case 2: + DEBUGP("Emergency call is ready.\n"); + break; + case 3: + DEBUGP("All AT commands are ready.\n"); + break; + case 4: + DEBUGP("SIM card inserted.\n"); + break; + case 5: + DEBUGP("SIM card removed.\n"); + break; + case 6: + DEBUGP("No access - limited service.\n"); + break; + case 7: + DEBUGP("SOS - limited service.\n"); + break; + default: + DEBUGP("Unknown module ready status %d\n", status); + } + + return 0; +} + +static int mtsmenu_parse(char *buf, int len, const char *param, + struct gsmd *g) +{ + char *tok, *param_tmp; + struct mtsmenu *mtsmenu; + + DEBUGP("mtsmenu_parse param=`%s'\n", param); + return 0; +} + +static const struct gsmd_unsolicit bcm_unsolicit[] = { + { "*MRDY", &mrdy_parse }, /* Module Ready Status */ + { "*MTSMENU", &mtsmenu_parse }, /* Set Up Menu (SAT) */ + + /* FIXME: determine other unsolicited responses */ +}; + +static int bcm_detect(struct gsmd *g) +{ + /* FIXME: do actual detection of vendor if we have multiple vendors */ + return 1; +} + +static int bcm_initsettings(struct gsmd *g) +{ + int rc; + struct gsmd_atcmd *cmd; + + /* TODO */ + return rc; +} + +struct gsmd_vendor_plugin gsmd_vendor_plugin = { + .name = "Broadcom BCM2132", + .ext_chars = "*", + .num_unsolicit = ARRAY_SIZE(bcm_unsolicit), + .unsolicit = bcm_unsolicit, + .detect = &bcm_detect, + .initsettings = &bcm_initsettings, +}; |