aboutsummaryrefslogtreecommitdiffstats
path: root/fsogsmd
diff options
context:
space:
mode:
authorSimon Busch <morphis@gravedo.de>2012-07-30 13:39:13 +0200
committerSimon Busch <morphis@gravedo.de>2012-07-30 13:39:13 +0200
commit26658988fa4f6bf65d1add413f9f78033f2b5213 (patch)
treeef6c05e0df071e7cadc35998c4502bccdc7e0c98 /fsogsmd
parent10e5b01e5a7ed290f81791c758e06d2975454987 (diff)
downloadcornucopia-26658988fa4f6bf65d1add413f9f78033f2b5213.tar.gz
cornucopia-26658988fa4f6bf65d1add413f9f78033f2b5213.tar.bz2
cornucopia-26658988fa4f6bf65d1add413f9f78033f2b5213.zip
fsogsmd: lib: move logic for PDP handler and lowlevel creation out of our modem class
Diffstat (limited to 'fsogsmd')
-rw-r--r--fsogsmd/src/lib/Makefile.am1
-rw-r--r--fsogsmd/src/lib/factories.vala129
-rw-r--r--fsogsmd/src/lib/modem.vala88
3 files changed, 133 insertions, 85 deletions
diff --git a/fsogsmd/src/lib/Makefile.am b/fsogsmd/src/lib/Makefile.am
index 75484535..e54ba791 100644
--- a/fsogsmd/src/lib/Makefile.am
+++ b/fsogsmd/src/lib/Makefile.am
@@ -40,6 +40,7 @@ libfsogsm_la_SOURCES = \
lowlevel.vala \
mediator.vala \
mediatorhelpers.vala \
+ factories.vala \
modem.vala \
phonebook.vala \
pdp.vala \
diff --git a/fsogsmd/src/lib/factories.vala b/fsogsmd/src/lib/factories.vala
new file mode 100644
index 00000000..e68f41d5
--- /dev/null
+++ b/fsogsmd/src/lib/factories.vala
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2009-2012 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+ *
+ * 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
+ *
+ */
+
+namespace FsoGsm
+{
+ private FsoGsm.LowLevel createLowLevelFromType( string lowleveltype )
+ {
+ FsoGsm.LowLevel lowlevel;
+ string typename = "none";
+
+ switch ( lowleveltype )
+ {
+ case "motorola_ezx":
+ typename = "LowLevelMotorolaEZX";
+ break;
+ case "openmoko":
+ typename = "LowLevelOpenmoko";
+ break;
+ case "nokia900":
+ typename = "LowLevelNokia900";
+ break;
+ case "samsung_crespo":
+ typename = "LowLevelSamsungCrespo";
+ break;
+ case "gta04":
+ typename = "LowLevelGTA04";
+ break;
+ default:
+ FsoFramework.theLogger.warning( @"Invalid lowlevel_type $lowleveltype; vendor specifics will NOT be available" );
+ lowleveltype = "none";
+ break;
+ }
+
+ if ( lowleveltype != "none" )
+ {
+ var lowlevelclass = Type.from_name( typename );
+ if ( lowlevelclass == Type.INVALID )
+ {
+ FsoFramework.theLogger.warning( @"Can't find plugin for lowlevel_type $lowleveltype; vendor specifics will NOT be available" );
+ lowlevel = new FsoGsm.NullLowLevel();
+ }
+ else
+ {
+ lowlevel = Object.new( lowlevelclass ) as FsoGsm.LowLevel;
+ FsoFramework.theLogger.info( @"Ready. Using lowlevel plugin $lowleveltype to handle vendor specifics" );
+ }
+ }
+ else
+ {
+ lowlevel = new FsoGsm.NullLowLevel();
+ }
+
+ return lowlevel;
+ }
+
+ private FsoGsm.IPdpHandler createPdpHandlerFromType( string pdphandlertype )
+ {
+ FsoGsm.IPdpHandler pdphandler;
+ string typename = "none";
+
+ switch ( pdphandlertype )
+ {
+ case "ppp":
+ typename = "PdpPpp";
+ break;
+ case "mux":
+ typename = "PdpPppMux";
+ break;
+ case "qmi":
+ typename = "PdpQmi";
+ break;
+ case "ippp":
+ typename = "PdpPppInternal";
+ break;
+ case "nokia_isi":
+ typename = "PdpNokiaIsi";
+ break;
+ case "samsung_ipc":
+ typename = "SamsungPdpHandler";
+ break;
+ case "option_gtm601":
+ typename = "PdpOptionGtm601";
+ break;
+ default:
+ FsoFramework.theLogger.warning( @"Invalid pdp_type $pdphandlertype; data connectivity will NOT be available" );
+ pdphandlertype = "none";
+ break;
+ }
+
+ if ( pdphandlertype != "none" )
+ {
+ var pdphandlerclass = Type.from_name( typename );
+ if ( pdphandlerclass == Type.INVALID )
+ {
+ FsoFramework.theLogger.warning( @"Can't find plugin for pdp_type $pdphandlertype; data connectivity will NOT be available" );
+ pdphandler = new FsoGsm.NullPdpHandler();
+ }
+ else
+ {
+ pdphandler = Object.new( pdphandlerclass ) as FsoGsm.PdpHandler;
+ FsoFramework.theLogger.info( @"Ready. Using pdp plugin $pdphandlertype to handle data connectivity" );
+ }
+ }
+ else
+ {
+ pdphandler = new FsoGsm.NullPdpHandler();
+ }
+
+ return pdphandler;
+ }
+}
+
+// vim:ts=4:sw=4:expandtab
diff --git a/fsogsmd/src/lib/modem.vala b/fsogsmd/src/lib/modem.vala
index 370d29f0..510967cd 100644
--- a/fsogsmd/src/lib/modem.vala
+++ b/fsogsmd/src/lib/modem.vala
@@ -330,97 +330,15 @@ public abstract class FsoGsm.AbstractModem : FsoGsm.Modem, FsoFramework.Abstract
private void initLowlevel()
{
- // check preferred low level poweron/poweroff plugin and instanciate
var lowleveltype = config.stringValue( CONFIG_SECTION, "lowlevel_type", "none" );
- string typename = "none";
-
- switch ( lowleveltype )
- {
- case "motorola_ezx":
- typename = "LowLevelMotorolaEZX";
- break;
- case "openmoko":
- typename = "LowLevelOpenmoko";
- break;
- case "nokia900":
- typename = "LowLevelNokia900";
- break;
- case "samsung_crespo":
- typename = "LowLevelSamsungCrespo";
- break;
- case "gta04":
- typename = "LowLevelGTA04";
- break;
- default:
- logger.warning( @"Invalid lowlevel_type $lowleveltype; vendor specifics will NOT be available" );
- lowlevel = new FsoGsm.NullLowLevel();
- return;
- }
-
- if ( lowleveltype != "none" )
- {
- var lowlevelclass = Type.from_name( typename );
- if ( lowlevelclass == Type.INVALID )
- {
- logger.warning( @"Can't find plugin for lowlevel_type $lowleveltype; vendor specifics will NOT be available" );
- lowlevel = new FsoGsm.NullLowLevel();
- return;
- }
-
- lowlevel = Object.new( lowlevelclass ) as FsoGsm.LowLevel;
- logger.info( @"Ready. Using lowlevel plugin $lowleveltype to handle vendor specifics" );
- }
+ lowlevel = createLowLevelFromType( lowleveltype );
}
private void initPdpHandler()
{
- // check preferred pdp handler plugin and instanciate
var pdphandlertype = config.stringValue( CONFIG_SECTION, "pdp_type", "none" );
- string typename = "none";
-
- switch ( pdphandlertype )
- {
- case "ppp":
- typename = "PdpPpp";
- break;
- case "mux":
- typename = "PdpPppMux";
- break;
- case "qmi":
- typename = "PdpQmi";
- break;
- case "ippp":
- typename = "PdpPppInternal";
- break;
- case "nokia_isi":
- typename = "PdpNokiaIsi";
- break;
- case "samsung_ipc":
- typename = "SamsungPdpHandler";
- break;
- case "option_gtm601":
- typename = "PdpOptionGtm601";
- break;
- default:
- logger.warning( @"Invalid pdp_type $pdphandlertype; data connectivity will NOT be available" );
- pdphandler = new FsoGsm.NullPdpHandler();
- return;
- }
-
- if ( pdphandlertype != "none" )
- {
- var pdphandlerclass = Type.from_name( typename );
- if ( pdphandlerclass == Type.INVALID )
- {
- logger.warning( @"Can't find plugin for pdp_type $pdphandlertype; data connectivity will NOT be available" );
- pdphandler = new FsoGsm.NullPdpHandler();
- return;
- }
-
- pdphandler = Object.new( pdphandlerclass ) as FsoGsm.PdpHandler;
- pdphandler.assign_modem( this );
- logger.info( @"Ready. Using pdp plugin $pdphandlertype to handle data connectivity" );
- }
+ pdphandler = createPdpHandlerFromType( pdphandlertype );
+ pdphandler.assign_modem( this );
}
private void initData()