diff options
author | Denis Kenzior <denkenz@gmail.com> | 2010-06-10 20:06:26 -0500 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-06-10 20:06:26 -0500 |
commit | 1b36d1cd43a035ab865ef56d366f8729d7e1b70d (patch) | |
tree | cbbfa5f775af9516b40a1f648e8a5560a9f666cc /drivers/atmodem | |
parent | 5a883d1c760fc3d64bdc87ebba7ef7ed4e3fceea (diff) | |
download | ofono-1b36d1cd43a035ab865ef56d366f8729d7e1b70d.tar.bz2 |
atmodem: Add utility for parsing CMTI/CDSI/CBMI
Diffstat (limited to 'drivers/atmodem')
-rw-r--r-- | drivers/atmodem/atutil.c | 40 | ||||
-rw-r--r-- | drivers/atmodem/atutil.h | 12 |
2 files changed, 52 insertions, 0 deletions
diff --git a/drivers/atmodem/atutil.c b/drivers/atmodem/atutil.c index e238f456..5dad679b 100644 --- a/drivers/atmodem/atutil.c +++ b/drivers/atmodem/atutil.c @@ -287,3 +287,43 @@ out: return FALSE; } + +gboolean at_util_parse_sms_index_delivery(GAtResult *result, const char *prefix, + enum at_util_sms_store *out_st, + int *out_index) +{ + GAtResultIter iter; + const char *strstore; + enum at_util_sms_store st; + int index; + + g_at_result_iter_init(&iter, result); + + if (!g_at_result_iter_next(&iter, prefix)) + return FALSE; + + if (!g_at_result_iter_next_string(&iter, &strstore)) + return FALSE; + + if (g_str_equal(strstore, "ME")) + st = AT_UTIL_SMS_STORE_ME; + else if (g_str_equal(strstore, "SM")) + st = AT_UTIL_SMS_STORE_SM; + else if (g_str_equal(strstore, "SR")) + st = AT_UTIL_SMS_STORE_SR; + else if (g_str_equal(strstore, "BM")) + st = AT_UTIL_SMS_STORE_BM; + else + return FALSE; + + if (!g_at_result_iter_next_number(&iter, &index)) + return FALSE; + + if (out_index) + *out_index = index; + + if (out_st) + *out_st = st; + + return TRUE; +} diff --git a/drivers/atmodem/atutil.h b/drivers/atmodem/atutil.h index 265a5ad4..9e0a84bf 100644 --- a/drivers/atmodem/atutil.h +++ b/drivers/atmodem/atutil.h @@ -19,6 +19,14 @@ * */ +enum at_util_sms_store { + AT_UTIL_SMS_STORE_SM = 0, + AT_UTIL_SMS_STORE_ME = 1, + AT_UTIL_SMS_STORE_MT = 2, + AT_UTIL_SMS_STORE_SR = 3, + AT_UTIL_SMS_STORE_BM = 4, +}; + void decode_at_error(struct ofono_error *error, const char *final); gint at_util_call_compare_by_status(gconstpointer a, gconstpointer b); gint at_util_call_compare_by_phone_number(gconstpointer a, gconstpointer b); @@ -34,6 +42,10 @@ gboolean at_util_parse_reg_unsolicited(GAtResult *result, const char *prefix, int *ci, int *tech, unsigned int vendor); +gboolean at_util_parse_sms_index_delivery(GAtResult *result, const char *prefix, + enum at_util_sms_store *store, + int *index); + struct cb_data { void *cb; void *data; |