summaryrefslogtreecommitdiff
path: root/plugins/ofono.c
diff options
context:
space:
mode:
authorGuillaume Zajac <guillaume.zajac@linux.intel.com>2011-12-15 14:34:29 +0100
committerDaniel Wagner <daniel.wagner@bmw-carit.de>2011-12-15 16:06:24 +0100
commit9a035b26d71263043e60e5d10ef1f24dbc86a3e5 (patch)
treec15d6241dd13cc6b2cf5a70d9029c8d8f39bcea2 /plugins/ofono.c
parentd6a1df79a211bb1ea57faff629f090371f344bd7 (diff)
downloadconnman-9a035b26d71263043e60e5d10ef1f24dbc86a3e5.tar.gz
connman-9a035b26d71263043e60e5d10ef1f24dbc86a3e5.tar.bz2
connman-9a035b26d71263043e60e5d10ef1f24dbc86a3e5.zip
ofono: Factorize Connection Managers intialization
Diffstat (limited to 'plugins/ofono.c')
-rw-r--r--plugins/ofono.c103
1 files changed, 30 insertions, 73 deletions
diff --git a/plugins/ofono.c b/plugins/ofono.c
index ef246b85..153ef2d2 100644
--- a/plugins/ofono.c
+++ b/plugins/ofono.c
@@ -1526,6 +1526,29 @@ static int cdma_cm_get_properties(struct modem_data *modem)
return -EINVAL;
}
+static gboolean connection_managers_init(struct modem_data *modem)
+{
+ if (has_interface(modem->interfaces, OFONO_API_CM) == TRUE) {
+ if (ready_to_create_device(modem) == TRUE)
+ create_device(modem);
+ if (modem->device != NULL) {
+ cm_get_properties(modem);
+ cm_get_contexts(modem);
+ }
+
+ return TRUE;
+ } else if (has_interface(modem->interfaces,
+ OFONO_API_CDMA_CM) == TRUE) {
+ if (ready_to_create_device(modem) == TRUE)
+ create_device(modem);
+ if (modem->device != NULL)
+ cdma_cm_get_properties(modem);
+
+ return TRUE;
+ } else
+ return FALSE;
+}
+
static void update_sim_imsi(struct modem_data *modem,
const char *imsi)
{
@@ -1611,20 +1634,8 @@ static void sim_properties_reply(struct modem_data *modem,
break;
}
- if (has_interface(modem->interfaces, OFONO_API_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL) {
- cm_get_properties(modem);
- cm_get_contexts(modem);
- }
- } else if (has_interface(modem->interfaces,
- OFONO_API_CDMA_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL)
- cdma_cm_get_properties(modem);
- }
+ connection_managers_init(modem);
+
return;
}
@@ -1676,22 +1687,7 @@ static gboolean modem_changed(DBusConnection *connection, DBusMessage *message,
if (modem->online == FALSE)
return TRUE;
- if (has_interface(modem->interfaces, OFONO_API_CM) == FALSE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL) {
- cm_get_properties(modem);
- cm_get_contexts(modem);
- }
- } else if (has_interface(modem->interfaces,
- OFONO_API_CDMA_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL) {
- cdma_cm_get_properties(modem);
- cdma_netreg_get_properties(modem);
- }
- }
+ connection_managers_init(modem);
} else if (g_str_equal(key, "Interfaces") == TRUE) {
modem->interfaces = extract_interfaces(&value);
@@ -1710,21 +1706,7 @@ static gboolean modem_changed(DBusConnection *connection, DBusMessage *message,
}
}
- if (has_interface(modem->interfaces, OFONO_API_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL) {
- cm_get_properties(modem);
- cm_get_contexts(modem);
- return TRUE;
- }
- } else if (has_interface(modem->interfaces,
- OFONO_API_CDMA_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL)
- cdma_cm_get_properties(modem);
- } else {
+ if (connection_managers_init(modem) == FALSE) {
if (modem->context != NULL) {
remove_cm_context(modem,
modem->context->path);
@@ -1752,20 +1734,7 @@ static gboolean modem_changed(DBusConnection *connection, DBusMessage *message,
DBG("%s Serial %s", modem->path, modem->serial);
- if (has_interface(modem->interfaces, OFONO_API_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL) {
- cm_get_properties(modem);
- cm_get_contexts(modem);
- }
- } else if (has_interface(modem->interfaces, OFONO_API_CDMA_CM)
- == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL)
- cdma_cm_get_properties(modem);
- }
+ connection_managers_init(modem);
}
return TRUE;
@@ -1847,20 +1816,8 @@ static void add_modem(const char *path, DBusMessageIter *prop)
modem_set_powered(modem);
} else if (has_interface(modem->interfaces, OFONO_API_SIM) == TRUE) {
sim_get_properties(modem);
- } else if (has_interface(modem->interfaces, OFONO_API_CM) == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL) {
- cm_get_properties(modem);
- cm_get_contexts(modem);
- }
- } else if (has_interface(modem->interfaces, OFONO_API_CDMA_CM)
- == TRUE) {
- if (ready_to_create_device(modem) == TRUE)
- create_device(modem);
- if (modem->device != NULL)
- cdma_cm_get_properties(modem);
- }
+ } else
+ connection_managers_init(modem);
}
static void modem_power_down(gpointer key, gpointer value, gpointer user_data)