#include <stdio.h>
#include <string.h>
#include "uqmi.h"
+#include "qmi-errors.h"
+#include "qmi-errors.c"
+
+bool cancel_all_requests = false;
#define __qmi_service(_n) [__##_n] = _n
static const uint8_t qmi_services[__QMI_SERVICE_LAST] = {
req->pending = false;
list_del(&req->list);
- tlv_buf = qmi_msg_get_tlv_buf(msg, &tlv_len);
- req->ret = qmi_check_message_status(tlv_buf, tlv_len);
- if (req->ret)
- msg = NULL;
+ if (msg) {
+ tlv_buf = qmi_msg_get_tlv_buf(msg, &tlv_len);
+ req->ret = qmi_check_message_status(tlv_buf, tlv_len);
+ if (req->ret)
+ msg = NULL;
+ } else {
+ req->ret = QMI_ERROR_CANCELLED;
+ }
if (req->cb && (msg || !req->no_error_cb))
req->cb(qmi, req, msg);
cancelled = uloop_cancelled;
uloop_cancelled = false;
uloop_run();
+
+ if (cancel_all_requests)
+ qmi_request_cancel(qmi, req);
+
uloop_cancelled = cancelled;
}
return -1;
}
+
+const char *qmi_get_error_str(int code)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_SIZE(qmi_errors); i++) {
+ if (qmi_errors[i].code == code)
+ return qmi_errors[i].text;
+ }
+
+ return "Unknown error";
+}