mirror of git://git.sysmocom.de/ofono
atmodem: fix to activate context with cid zero
xmm7xxx based devices (among others) return 0 as cid for default pdp context. Fix the atmodem gprs driver logic to work with such devices by initializing last_auto_context_id to -1 instead of 0 to indicate a deactivated context.
This commit is contained in:
parent
686e3fba83
commit
999cf73282
|
@ -48,7 +48,7 @@ static const char *none_prefix[] = { NULL };
|
||||||
struct gprs_data {
|
struct gprs_data {
|
||||||
GAtChat *chat;
|
GAtChat *chat;
|
||||||
unsigned int vendor;
|
unsigned int vendor;
|
||||||
unsigned int last_auto_context_id;
|
int last_auto_context_id;
|
||||||
gboolean telit_try_reattach;
|
gboolean telit_try_reattach;
|
||||||
int attached;
|
int attached;
|
||||||
};
|
};
|
||||||
|
@ -161,7 +161,7 @@ static void at_cgdcont_read_cb(gboolean ok, GAtResult *result,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gd->last_auto_context_id == 0) {
|
if (gd->last_auto_context_id == -1) {
|
||||||
DBG("Context got deactivated while calling CGDCONT");
|
DBG("Context got deactivated while calling CGDCONT");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -257,11 +257,11 @@ static void cgev_notify(GAtResult *result, gpointer user_data)
|
||||||
g_at_chat_send(gd->chat, "AT+CGDCONT?", cgdcont_prefix,
|
g_at_chat_send(gd->chat, "AT+CGDCONT?", cgdcont_prefix,
|
||||||
at_cgdcont_read_cb, gprs, NULL);
|
at_cgdcont_read_cb, gprs, NULL);
|
||||||
} else if (g_str_has_prefix(event, "ME PDN DEACT")) {
|
} else if (g_str_has_prefix(event, "ME PDN DEACT")) {
|
||||||
unsigned int context_id;
|
int context_id;
|
||||||
sscanf(event, "%*s %*s %*s %u", &context_id);
|
sscanf(event, "%*s %*s %*s %u", &context_id);
|
||||||
/* Indicate that this cid is not activated anymore */
|
/* Indicate that this cid is not activated anymore */
|
||||||
if (gd->last_auto_context_id == context_id)
|
if (gd->last_auto_context_id == context_id)
|
||||||
gd->last_auto_context_id = 0;
|
gd->last_auto_context_id = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -632,6 +632,7 @@ static int at_gprs_probe(struct ofono_gprs *gprs,
|
||||||
|
|
||||||
gd->chat = g_at_chat_clone(chat);
|
gd->chat = g_at_chat_clone(chat);
|
||||||
gd->vendor = vendor;
|
gd->vendor = vendor;
|
||||||
|
gd->last_auto_context_id = -1;
|
||||||
|
|
||||||
ofono_gprs_set_data(gprs, gd);
|
ofono_gprs_set_data(gprs, gd);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue