voicecall: Watch for changes to relevant SIM files
authorAndrzej Zaborowski <andrew.zaborowski@intel.com>
Tue, 15 Feb 2011 07:58:54 +0000 (08:58 +0100)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 17 Feb 2011 21:09:16 +0000 (15:09 -0600)
src/voicecall.c

index 4606668..d6e8539 100644 (file)
@@ -2279,6 +2279,19 @@ struct ofono_voicecall *ofono_voicecall_create(struct ofono_modem *modem,
        return vc;
 }
 
+static void read_ecc_numbers(int id, void *userdata)
+{
+       struct ofono_voicecall *vc = userdata;
+
+       /* Try both formats, only one or none will work */
+       ofono_sim_read(vc->sim_context, SIM_EFECC_FILEID,
+                       OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
+                       ecc_g2_read_cb, vc);
+       ofono_sim_read(vc->sim_context, SIM_EFECC_FILEID,
+                       OFONO_SIM_FILE_STRUCTURE_FIXED,
+                       ecc_g3_read_cb, vc);
+}
+
 static void sim_state_watch(enum ofono_sim_state new_state, void *user)
 {
        struct ofono_voicecall *vc = user;
@@ -2288,13 +2301,10 @@ static void sim_state_watch(enum ofono_sim_state new_state, void *user)
                if (vc->sim_context == NULL)
                        vc->sim_context = ofono_sim_context_create(vc->sim);
 
-               /* Try both formats, only one or none will work */
-               ofono_sim_read(vc->sim_context, SIM_EFECC_FILEID,
-                               OFONO_SIM_FILE_STRUCTURE_TRANSPARENT,
-                               ecc_g2_read_cb, vc);
-               ofono_sim_read(vc->sim_context, SIM_EFECC_FILEID,
-                               OFONO_SIM_FILE_STRUCTURE_FIXED,
-                               ecc_g3_read_cb, vc);
+               read_ecc_numbers(SIM_EFECC_FILEID, vc);
+
+               ofono_sim_add_file_watch(vc->sim_context, SIM_EFECC_FILEID,
+                                               read_ecc_numbers, vc, NULL);
                break;
        case OFONO_SIM_STATE_NOT_PRESENT:
                /* TODO: Must release all non-emergency calls */