summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-06-24 22:24:56 -0700
committerMarcel Holtmann <marcel@holtmann.org>2012-06-24 22:24:56 -0700
commit74d208768ae462ec9946a58c4977b031771c0b95 (patch)
treedc2de20c89b20e96b418b97ead1c3a87765cf0af
parent797f3a502e3c83e421f076700ab878a2715069db (diff)
downloadofono-74d208768ae462ec9946a58c4977b031771c0b95.tar.bz2
qmimodem: Add helper function for accessing 64-bit integers
-rw-r--r--drivers/qmimodem/qmi.c22
-rw-r--r--drivers/qmimodem/qmi.h2
2 files changed, 24 insertions, 0 deletions
diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index b08321d3..378da80f 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -1320,6 +1320,28 @@ bool qmi_result_get_uint32(struct qmi_result *result, uint8_t type,
return true;
}
+bool qmi_result_get_uint64(struct qmi_result *result, uint8_t type,
+ uint64_t *value)
+{
+ const unsigned char *ptr;
+ uint16_t len;
+ uint64_t tmp;
+
+ if (!result || !type)
+ return false;
+
+ ptr = tlv_get(result->data, result->length, type, &len);
+ if (!ptr)
+ return false;
+
+ memcpy(&tmp, ptr, 8);
+
+ if (value)
+ *value = GUINT64_FROM_LE(tmp);
+
+ return true;
+}
+
struct service_create_data {
struct qmi_device *device;
uint8_t type;
diff --git a/drivers/qmimodem/qmi.h b/drivers/qmimodem/qmi.h
index 0bfba93d..f8f18b94 100644
--- a/drivers/qmimodem/qmi.h
+++ b/drivers/qmimodem/qmi.h
@@ -114,6 +114,8 @@ bool qmi_result_get_uint16(struct qmi_result *result, uint8_t type,
uint16_t *value);
bool qmi_result_get_uint32(struct qmi_result *result, uint8_t type,
uint32_t *value);
+bool qmi_result_get_uint64(struct qmi_result *result, uint8_t type,
+ uint64_t *value);
struct qmi_service;