summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorAntara Borwankar <antara.borwankar@intel.com>2019-12-19 18:26:04 +0530
committerDenis Kenzior <denkenz@gmail.com>2019-12-20 12:32:39 -0600
commitf76e1d75d05c216ff365505a30386afcc13545d8 (patch)
tree180c9d61606d1dce58084c7c2fc9f0adb9d28f7c /plugins
parentaa89c19a506fd0d365e8af79801cc80b28533db1 (diff)
downloadofono-f76e1d75d05c216ff365505a30386afcc13545d8.tar.gz
xmm7xxx: modified handling of XSIM states for xmm modems
+XSIM:7 state as defined in xmm7560 functional AT specification only indicates ready for attach. +CPIN: READY is received after SIM is completely initialized. Also indicating readiness of Phonebook and SMS. Hence moving the creation of SMS and Phonebook atom to xmm7xxx_post_sim function. +XSIM:4 PUK needed state was not handled. It must be handled same as PIN needed state. Added handling of this case to switch_sim_state_status function.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/xmm7xxx.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/plugins/xmm7xxx.c b/plugins/xmm7xxx.c
index 32c024eb..b3aaf852 100644
--- a/plugins/xmm7xxx.c
+++ b/plugins/xmm7xxx.c
@@ -106,8 +106,8 @@ struct xmm7xxx_data {
GAtChat *chat; /* AT chat */
struct ofono_sim *sim;
ofono_bool_t have_sim;
- ofono_bool_t sms_phonebook_added;
unsigned int netreg_watch;
+ int xsim_status;
};
/* Coex Implementation */
@@ -980,10 +980,10 @@ static void switch_sim_state_status(struct ofono_modem *modem, int status)
if (data->have_sim == TRUE) {
ofono_sim_inserted_notify(data->sim, FALSE);
data->have_sim = FALSE;
- data->sms_phonebook_added = FALSE;
}
break;
case 1: /* SIM inserted, PIN verification needed */
+ case 4: /* SIM inserted, PUK verification needed */
if (data->have_sim == FALSE) {
ofono_sim_inserted_notify(data->sim, TRUE);
data->have_sim = TRUE;
@@ -991,30 +991,26 @@ static void switch_sim_state_status(struct ofono_modem *modem, int status)
break;
case 2: /* SIM inserted, PIN verification not needed - READY */
case 3: /* SIM inserted, PIN verified - READY */
- case 7: /* SIM inserted, SMS and phonebook - READY */
+ case 7: /* SIM inserted, Ready for ATTACH - READY */
if (data->have_sim == FALSE) {
ofono_sim_inserted_notify(data->sim, TRUE);
data->have_sim = TRUE;
}
ofono_sim_initialized_notify(data->sim);
-
- if (data->sms_phonebook_added == FALSE) {
- ofono_phonebook_create(modem, 0, "atmodem", data->chat);
- ofono_sms_create(modem, 0, "atmodem", data->chat);
- data->sms_phonebook_added = TRUE;
- }
-
break;
default:
ofono_warn("Unknown SIM state %d received", status);
break;
}
+
+ data->xsim_status = status;
}
static void xsimstate_notify(GAtResult *result, gpointer user_data)
{
struct ofono_modem *modem = user_data;
+ struct xmm7xxx_data *data = ofono_modem_get_data(modem);
int status;
GAtResultIter iter;
@@ -1029,7 +1025,8 @@ static void xsimstate_notify(GAtResult *result, gpointer user_data)
DBG("status=%d\n", status);
- switch_sim_state_status(modem, status);
+ if (data->xsim_status != status)
+ switch_sim_state_status(modem, status);
}
static void xsimstate_query_cb(gboolean ok, GAtResult *result,
@@ -1083,7 +1080,7 @@ static void cfun_enable_cb(gboolean ok, GAtResult *result, gpointer user_data)
g_at_chat_send(data->chat, "AT&C0", NULL, NULL, NULL, NULL);
data->have_sim = FALSE;
- data->sms_phonebook_added = FALSE;
+ data->xsim_status = -1;
ofono_modem_set_powered(modem, TRUE);
@@ -1239,6 +1236,9 @@ static void xmm7xxx_post_online(struct ofono_modem *modem)
DBG("%p", modem);
+ ofono_phonebook_create(modem, 0, "atmodem", data->chat);
+ ofono_sms_create(modem, 0, "atmodem", data->chat);
+
ofono_netreg_create(modem, OFONO_VENDOR_IFX, "atmodem", data->chat);
gprs = ofono_gprs_create(modem, OFONO_VENDOR_IFX, "atmodem",