Add toolchain and mbtk source

Change-Id: Ie12546301367ea59240bf23d5e184ad7e36e40b3
diff --git a/mbtk/ql_lib/src/ql_sleep_wakelock.c b/mbtk/ql_lib/src/ql_sleep_wakelock.c
new file mode 100755
index 0000000..03f356c
--- /dev/null
+++ b/mbtk/ql_lib/src/ql_sleep_wakelock.c
@@ -0,0 +1,161 @@
+/*
+*
+* Data : 2023/03/28 16:00:28
+* Author : Hanzhiyu
+*
+*/
+#include "ql/ql_sleep_wakelock.h"
+#include <stdio.h>
+#include <unistd.h>
+#include <stddef.h>
+#include "mbtk_type.h"
+#include "mbtk_log.h"
+
+typedef struct
+{
+    int fd;
+    char name[128];
+} lock_name;
+
+lock_name ql_lock_name[512]={0};
+static bool autosleep_enable = FALSE;
+
+extern int Ql_Autosleep_Enable(char enable)
+{
+    if(enable == 1)
+    {
+        if(!access("/sys/power/autosleep", W_OK))
+        {
+            system("echo mem > /sys/power/autosleep");
+            autosleep_enable = TRUE;
+            return 0;
+        }
+        else
+        {
+            LOGE("/sys/power/autosleep can not write.");
+            return -1;
+        }
+    }
+    else
+    {
+        if(!access("/sys/power/autosleep", W_OK))
+        {
+            system("echo off > /sys/power/autosleep");
+            autosleep_enable = FALSE;
+            return 0;
+        }
+        else
+        {
+            LOGE("/sys/power/autosleep can not write.");
+            return -1;
+        }
+    }
+}
+
+extern int Ql_SLP_WakeLock_Create(const char *name, size_t len)
+{
+    if(!autosleep_enable) {
+        LOGE("Autosleep not enable.");
+        return -1;
+    }
+
+    if(name != NULL && len < 127)
+    {
+        int i;
+        for(i=0;i<512;i++)
+        {
+            if(ql_lock_name[i].fd == 0)
+                break;
+        }
+        memcpy(ql_lock_name[i].name, name, strlen(name)+1);
+        ql_lock_name[i].fd = i;
+        return ql_lock_name[i].fd;
+    }
+    else
+        return -1;
+}
+
+extern int Ql_SLP_WakeLock_Lock(int fd)
+{
+    if(!autosleep_enable) {
+        LOGE("Autosleep not enable.");
+        return -1;
+    }
+
+    int i;
+    for(i=0;i<512;i++)
+    {
+        if(ql_lock_name[i].fd == fd)
+            break;
+    }
+    if(i == 512)
+        return -1;
+
+    if(!access("/sys/power/wake_lock", W_OK))
+    {
+        char cmd[128]={0};
+        sprintf(cmd, "echo %s > /sys/power/wake_lock", ql_lock_name[i].name);
+        system(cmd);
+        return 0;
+    }
+    else
+    {
+        printf("/sys/power/wake_lock can not write.");
+        return -1;
+    }
+}
+
+extern int Ql_SLP_WakeLock_Unlock(int fd)
+{
+    if(!autosleep_enable) {
+        LOGE("Autosleep not enable.");
+        return -1;
+    }
+
+    int i;
+    for(i=0;i<512;i++)
+    {
+        if(ql_lock_name[i].fd == fd)
+            break;
+    }
+    if(i == 512)
+        return -1;
+
+    if(!access("/sys/power/wake_unlock", W_OK))
+    {
+        char cmd[128]={0};
+        sprintf(cmd, "echo %s > /sys/power/wake_unlock", ql_lock_name[i].name);
+        system(cmd);
+        return 0;
+    }
+    else
+    {
+        printf("/sys/power/wake_unlock can not write.");
+        return -1;
+    }
+
+}
+
+extern int Ql_SLP_WakeLock_Destroy(int fd)
+{
+    if(!autosleep_enable) {
+        LOGE("Autosleep not enable.");
+        return -1;
+    }
+
+    int i;
+    for(i=0;i<512;i++)
+    {
+        if(ql_lock_name[i].fd == fd)
+        break;
+    }
+    if(i == 512)
+        return -1;
+    else
+    {
+        ql_lock_name[i].fd = 0;
+        memset(ql_lock_name[i].name, 0, 128);
+        return 0;
+    }
+}
+