add a function to get a string for a qmi error code
[project/uqmi.git] / dev.c
diff --git a/dev.c b/dev.c
index 486230a..21e30ea 100644 (file)
--- a/dev.c
+++ b/dev.c
@@ -4,6 +4,8 @@
 #include <stdio.h>
 #include <string.h>
 #include "uqmi.h"
+#include "qmi-errors.h"
+#include "qmi-errors.c"
 
 #define __qmi_service(_n) [__##_n] = _n
 static const uint8_t qmi_services[__QMI_SERVICE_LAST] = {
@@ -58,7 +60,7 @@ static void __qmi_request_complete(struct qmi_dev *qmi, struct qmi_request *req,
        if (req->ret)
                msg = NULL;
 
-       if (req->cb)
+       if (req->cb && (msg || !req->no_error_cb))
                req->cb(qmi, req, msg);
 
        if (req->complete) {
@@ -335,3 +337,15 @@ QmiService qmi_service_get_by_name(const char *str)
 
        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";
+}