uqmi: add support for MBIM devices with QMI service
[project/uqmi.git] / uqmi.h
diff --git a/uqmi.h b/uqmi.h
index 213dbc5..2999977 100644 (file)
--- a/uqmi.h
+++ b/uqmi.h
@@ -1,8 +1,32 @@
+/*
+ * uqmi -- tiny QMI support implementation
+ *
+ * Copyright (C) 2014-2015 Felix Fietkau <nbd@openwrt.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
+ */
+
 #ifndef __UQMI_H
 #define __UQMI_H
 
+#include <stdbool.h>
+
 #include <libubox/uloop.h>
 #include <libubox/ustream.h>
+
 #include "qmi-message.h"
 
 #ifdef DEBUG_PACKET
@@ -31,7 +55,8 @@ static inline void dump_packet(const char *prefix, void *ptr, int len)
     __qmi_service(QMI_SERVICE_RMTFS), \
     __qmi_service(QMI_SERVICE_CAT), \
     __qmi_service(QMI_SERVICE_RMS), \
-    __qmi_service(QMI_SERVICE_OMA)
+    __qmi_service(QMI_SERVICE_OMA), \
+    __qmi_service(QMI_SERVICE_WDA)
 
 #define __qmi_service(_n) __##_n
 enum {
@@ -59,8 +84,11 @@ struct qmi_dev {
 
        uint32_t service_connected;
        uint32_t service_keep_cid;
+       uint32_t service_release_cid;
 
        uint8_t ctl_tid;
+
+       bool is_mbim;
 };
 
 struct qmi_request {
@@ -76,6 +104,7 @@ struct qmi_request {
        int ret;
 };
 
+extern bool cancel_all_requests;
 int qmi_device_open(struct qmi_dev *qmi, const char *path);
 void qmi_device_close(struct qmi_dev *qmi);
 
@@ -90,6 +119,7 @@ static inline bool qmi_request_pending(struct qmi_request *req)
 
 int qmi_service_connect(struct qmi_dev *qmi, QmiService svc, int client_id);
 int qmi_service_get_client_id(struct qmi_dev *qmi, QmiService svc);
+int qmi_service_release_client_id(struct qmi_dev *qmi, QmiService svc);
 QmiService qmi_service_get_by_name(const char *str);
 const char *qmi_get_error_str(int code);