summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPekka Pessi <Pekka.Pessi@nokia.com>2010-08-26 16:08:41 +0300
committerDenis Kenzior <denkenz@gmail.com>2010-08-26 10:38:04 -0500
commit2778092b8331d4ccc63c805c7f5d141ca2ee55ea (patch)
tree7605af2a0ef319ff834a5e49e938ea58ef6a1f75
parentd5e37afee23b21f3d0af4f8abb7c6f691433dba6 (diff)
downloadofono-2778092b8331d4ccc63c805c7f5d141ca2ee55ea.tar.bz2
isimodem/gprs: fix attached_status response
-rw-r--r--drivers/isimodem/gprs.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/isimodem/gprs.c b/drivers/isimodem/gprs.c
index 3f799724..7c6a8065 100644
--- a/drivers/isimodem/gprs.c
+++ b/drivers/isimodem/gprs.c
@@ -41,6 +41,16 @@
#include "gpds.h"
#include "debug.h"
+/* 27.007 Section 10.1.20 <stat> */
+enum network_registration_status {
+ GPRS_STAT_NOT_REGISTERED = 0,
+ GPRS_STAT_REGISTERED = 1,
+ GPRS_STAT_SEARCHING = 2,
+ GPRS_STAT_DENIED = 3,
+ GPRS_STAT_UNKNOWN = 4,
+ GPRS_STAT_ROAMING = 5
+};
+
struct gprs_data {
GIsiClient *client;
};
@@ -252,6 +262,7 @@ static gboolean status_resp_cb(GIsiClient *client,
const unsigned char *msg = data;
struct isi_cb_data *cbd = opaque;
ofono_gprs_status_cb_t cb = cbd->cb;
+ int status;
if (!msg) {
DBG("ISI client error: %d", g_isi_client_error(client));
@@ -263,9 +274,18 @@ static gboolean status_resp_cb(GIsiClient *client,
/* FIXME: the core still expects reg status, and not a boolean
* attached status here.*/
+ switch (msg[1]) {
+ case GPDS_ATTACHED:
+ status = GPRS_STAT_REGISTERED;
+ break;
+ case GPDS_DETACHED:
+ status = GPRS_STAT_NOT_REGISTERED;
+ break;
+ default:
+ status = GPRS_STAT_UNKNOWN;
+ }
- /* CALLBACK_WITH_SUCCESS(cb, msg[1] == GPDS_ATTACHED, cbd->data); */
- CALLBACK_WITH_SUCCESS(cb, 1, cbd->data);
+ CALLBACK_WITH_SUCCESS(cb, status, cbd->data);
goto out;