summaryrefslogtreecommitdiff
path: root/drivers/rilmodem
diff options
context:
space:
mode:
authorSamrat Guha Niyogi <samrat.guha.niyogi@intel.com>2016-03-31 13:08:46 +0530
committerDenis Kenzior <denkenz@gmail.com>2016-03-31 10:16:23 -0500
commit408b78e285fd360ef206d9f2dbe6d211129aa330 (patch)
tree8caddd03294b9924af5bb46c7d89e0761055978e /drivers/rilmodem
parent6eeb896981fb22c760a4a76a35a9e0e58748bb76 (diff)
downloadofono-408b78e285fd360ef206d9f2dbe6d211129aa330.tar.gz
rilmodem: Add support of IMEISV
Diffstat (limited to 'drivers/rilmodem')
-rw-r--r--drivers/rilmodem/devinfo.c44
1 files changed, 43 insertions, 1 deletions
diff --git a/drivers/rilmodem/devinfo.c b/drivers/rilmodem/devinfo.c
index bb1e6426..24197628 100644
--- a/drivers/rilmodem/devinfo.c
+++ b/drivers/rilmodem/devinfo.c
@@ -96,6 +96,47 @@ static void ril_query_revision(struct ofono_devinfo *info,
CALLBACK_WITH_FAILURE(cb, NULL, data);
}
+static void query_svn_cb(struct ril_msg *message, gpointer user_data)
+{
+ struct cb_data *cbd = user_data;
+ ofono_devinfo_query_cb_t cb = cbd->cb;
+ GRil *ril = cbd->user;
+ struct parcel rilp;
+ char *imeisv;
+
+ if (message->error != RIL_E_SUCCESS)
+ goto error;
+
+ g_ril_init_parcel(message, &rilp);
+
+ imeisv = parcel_r_string(&rilp);
+
+ g_ril_append_print_buf(ril, "{%s}", imeisv);
+ g_ril_print_response(ril, message);
+
+ CALLBACK_WITH_SUCCESS(cb, imeisv, cbd->data);
+ g_free(imeisv);
+ return;
+
+error:
+ CALLBACK_WITH_FAILURE(cb, NULL, cbd->data);
+}
+
+static void ril_query_svn(struct ofono_devinfo *info,
+ ofono_devinfo_query_cb_t cb,
+ void *data)
+{
+ GRil *ril = ofono_devinfo_get_data(info);
+ struct cb_data *cbd = cb_data_new(cb, data, ril);
+
+ if (g_ril_send(ril, RIL_REQUEST_GET_IMEISV, NULL,
+ query_svn_cb, cbd, g_free) > 0)
+ return;
+
+ g_free(cbd);
+ CALLBACK_WITH_FAILURE(cb, NULL, data);
+}
+
static void query_serial_cb(struct ril_msg *message, gpointer user_data)
{
struct cb_data *cbd = user_data;
@@ -178,7 +219,8 @@ static struct ofono_devinfo_driver driver = {
.query_manufacturer = ril_query_manufacturer,
.query_model = ril_query_model,
.query_revision = ril_query_revision,
- .query_serial = ril_query_serial
+ .query_serial = ril_query_serial,
+ .query_svn = ril_query_svn
};
void ril_devinfo_init(void)