diff options
author | Samrat Guha Niyogi <samrat.guha.niyogi@intel.com> | 2016-03-31 13:08:46 +0530 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2016-03-31 10:16:23 -0500 |
commit | 408b78e285fd360ef206d9f2dbe6d211129aa330 (patch) | |
tree | 8caddd03294b9924af5bb46c7d89e0761055978e /drivers/rilmodem | |
parent | 6eeb896981fb22c760a4a76a35a9e0e58748bb76 (diff) | |
download | ofono-408b78e285fd360ef206d9f2dbe6d211129aa330.tar.gz |
rilmodem: Add support of IMEISV
Diffstat (limited to 'drivers/rilmodem')
-rw-r--r-- | drivers/rilmodem/devinfo.c | 44 |
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) |