---
 plugins/ofono.c |  103 ++++++++++++++++---------------------------------------
 1 files changed, 30 insertions(+), 73 deletions(-)

diff --git a/plugins/ofono.c b/plugins/ofono.c
index 3259914..04c25a0 100644
--- a/plugins/ofono.c
+++ b/plugins/ofono.c
@@ -1727,6 +1727,29 @@ static int cdma_cm_get_properties(struct modem_data 
*modem)
                                cdma_cm_properties_reply, modem);
 }
 
+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)
 {
@@ -1812,20 +1835,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;
                }
 
@@ -1877,22 +1888,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);
 
@@ -1911,21 +1907,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);
@@ -1953,20 +1935,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;
@@ -2048,20 +2017,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)
-- 
1.7.1

_______________________________________________
connman mailing list
connman@connman.net
http://lists.connman.net/listinfo/connman

Reply via email to