UPSTREAM: mm-sim-qmi: parse ICCID as hex instead of BCD
BUG=b:181736799
TEST=unit tests; cut tryjob, test by vendor
Change-Id: I27a2ee9b19d2eca14cff32ea561419bd9f0d1d57
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/modemmanager-next/+/2950383
Tested-by: Eric Caruso <ejcaruso@chromium.org>
Reviewed-by: Madhav . <madhavadas@google.com>
Commit-Queue: Eric Caruso <ejcaruso@chromium.org>
diff --git a/src/mm-sim-qmi.c b/src/mm-sim-qmi.c
index be58997..6e479aa 100644
--- a/src/mm-sim-qmi.c
+++ b/src/mm-sim-qmi.c
@@ -336,6 +336,7 @@
{
GError *error = NULL;
GArray *read_result;
+ gchar *raw_iccid;
gchar *iccid;
read_result = uim_read_finish (client, res, &error);
@@ -345,10 +346,14 @@
return;
}
- iccid = mm_bcd_to_string ((const guint8 *) read_result->data, read_result->len,
- TRUE /* low_nybble_first */);
- g_assert (iccid);
- g_task_return_pointer (task, iccid, g_free);
+ raw_iccid = mm_utils_bin2hexstr ((const guint8 *) read_result->data, read_result->len);
+ g_assert (raw_iccid);
+ iccid = mm_3gpp_parse_iccid (raw_iccid, &error);
+ if (!iccid) {
+ g_task_return_error (task, error);
+ } else {
+ g_task_return_pointer (task, iccid, g_free);
+ }
g_object_unref (task);
g_array_unref (read_result);