Add toolchain and mbtk source

Change-Id: Ie12546301367ea59240bf23d5e184ad7e36e40b3
diff --git a/mbtk/ql_lib/src/ql_dev_api.c b/mbtk/ql_lib/src/ql_dev_api.c
new file mode 100755
index 0000000..d473ab8
--- /dev/null
+++ b/mbtk/ql_lib/src/ql_dev_api.c
@@ -0,0 +1,179 @@
+//**********************
+#include "ql/ql_dev.h"
+#include "mbtk_type.h"
+#include "mbtk_info_api.h"
+
+//**********************
+
+mbtk_info_handle_t* ql_info_handle = NULL;
+int ql_info_handle_num = 0;
+static bool inited = FALSE;
+
+//**********************
+QL_DEV_ERROR_CODE ql_dev_init()
+{
+    if(!inited && ql_info_handle == NULL)
+    {
+        ql_info_handle = mbtk_info_handle_get();
+        if(ql_info_handle)
+        {
+            ql_info_handle_num++;
+            inited = TRUE;
+            return QL_DEV_SUCCESS;
+        } else {
+            LOGE("mbtk_info_handle_get() fail.");
+            return QL_DEV_GENERIC_FAILURE;
+        }
+    } else {
+        if(!inited) {
+            ql_info_handle_num++;
+            inited = TRUE;
+        }
+        return QL_DEV_SUCCESS;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_release()
+{
+    if(ql_info_handle)
+    {
+        LOGD("ql_info_handle_num = %d", ql_info_handle_num);
+        if(ql_info_handle_num == 1) { // 最后一个引用,可释放。
+            int ret = mbtk_info_handle_free(&ql_info_handle);
+            if(ret) {
+                LOGE("mbtk_info_handle_free() fail.");
+                return QL_DEV_GENERIC_FAILURE;
+            }
+            else
+            {
+                ql_info_handle_num = 0;
+                ql_info_handle = NULL;
+                return QL_DEV_SUCCESS;
+            }
+        } else {
+            ql_info_handle_num--;
+            return QL_DEV_SUCCESS;
+        }
+    }
+    else
+    {
+        LOGE("DEV handle not inited.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_get_imei(char* imei)
+{
+    if(ql_info_handle == NULL || imei == NULL)
+    {
+        LOGE("ARG error.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+
+    if(mbtk_imei_get(ql_info_handle, imei)) {
+        return QL_DEV_GENERIC_FAILURE;
+    } else {
+        return QL_DEV_SUCCESS;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_get_firmware_version(char* version)
+{
+    if(ql_info_handle == NULL || version == NULL)
+    {
+        LOGE("ARG error.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+
+    if(mbtk_version_get(ql_info_handle, version)) {
+        return QL_DEV_GENERIC_FAILURE;
+    } else {
+        return QL_DEV_SUCCESS;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_get_model(char* model)
+{
+    if(ql_info_handle == NULL || model == NULL)
+    {
+        LOGE("ARG error.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+
+    if(mbtk_model_get(ql_info_handle, model)) {
+        return QL_DEV_GENERIC_FAILURE;
+    } else {
+        return QL_DEV_SUCCESS;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_get_sn(char* sn)
+{
+    if(ql_info_handle == NULL || sn == NULL)
+    {
+        LOGE("ARG error.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+
+    if(mbtk_sn_get(ql_info_handle, sn)) {
+        return QL_DEV_GENERIC_FAILURE;
+    } else {
+        return QL_DEV_SUCCESS;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_set_modem_fun(QL_DEV_MODEM_FUNCTION function, int rst)
+{
+    if(ql_info_handle == NULL)
+    {
+        LOGE("ARG error.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+    mbtk_modem_info_t modem;
+    modem.rst = rst;
+    switch (function)
+    {
+        case QL_DEV_MODEM_MIN_FUN:
+            modem.fun = MBTK_DEV_MODEM_MIN_FUN;
+            break;
+        case QL_DEV_MODEM_FULL_FUN:
+            modem.fun = MBTK_DEV_MODEM_FULL_FUN;
+            break;
+        case QL_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS:
+            modem.fun = MBTK_DEV_MODEM_DISABLE_RECEIVE_RF_CIRCUITS;
+            break;
+        case QL_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS:
+            modem.fun = MBTK_DEV_MODEM_DISABLE_TRANSMIT_AND_RECEIVE_RF_CIRCUITS;
+            break;
+        case QL_DEV_MODEM_DISABLE_SIM:
+            modem.fun = MBTK_DEV_MODEM_DISABLE_SIM;
+            break;
+        case QL_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE:
+            modem.fun = MBTK_DEV_MODEM_TURN_OFF_FULL_SECONDARY_RECEIVE;
+            break;
+        default:
+            break;
+    }
+    if(mbtk_set_modem_fun(ql_info_handle, &modem)) {
+        return QL_DEV_GENERIC_FAILURE;
+    } else {
+        return QL_DEV_SUCCESS;
+    }
+}
+
+QL_DEV_ERROR_CODE ql_dev_get_modem_fun(int *function)
+{
+    if(ql_info_handle == NULL || function == NULL)
+    {
+        LOGE("ARG error.");
+        return QL_DEV_GENERIC_FAILURE;
+    }
+
+    if(mbtk_get_modem_fun(ql_info_handle, function)) {
+        return QL_DEV_GENERIC_FAILURE;
+    } else {
+        return QL_DEV_SUCCESS;
+    }
+}
+
+//**********************