Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/test/others/mbtk_gnss_cli.c b/mbtk/test/others/mbtk_gnss_cli.c
new file mode 100755
index 0000000..825d501
--- /dev/null
+++ b/mbtk/test/others/mbtk_gnss_cli.c
@@ -0,0 +1,181 @@
+/*
+*    gnss_ipc.c
+*
+*    MBTK GNSS IPC service source.
+*
+*/
+/******************************************************************************
+
+                          EDIT HISTORY FOR FILE
+
+  WHEN        WHO       WHAT,WHERE,WHY
+--------    --------    -------------------------------------------------------
+2024/6/15     LiuBin      Initial version
+
+******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <netinet/in.h>
+#include <pthread.h>
+#include <sys/epoll.h>
+
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+#include "mbtk_gnss.h"
+#include "mbtk_utils.h"
+
+#define GNSS_SOCK_PATH "/tmp/mbtk_gnss_sock"
+
+static int sock_listen_fd = -1;
+
+typedef enum {
+    GNSS_CMD_INIT = 0,
+    GNSS_CMD_DEINIT,
+    GNSS_CMD_SETTING,
+    GNSS_CMD_DL
+} gnss_cmd_enum;
+
+static void help()
+{
+    printf("gnss_cli gnss_init <0-15>\n");
+    printf("gnss_cli gnss_deinit\n");
+    printf("gnss_cli gnss_setting cmd\n");
+    printf("gnss_cli gnss_dl fw_name\n");
+}
+
+static int cmd_process(gnss_cmd_enum cmd, void *arg)
+{
+    if(sock_listen_fd < 0) {
+        sock_listen_fd = socket(AF_LOCAL, SOCK_STREAM, 0);
+        if(sock_listen_fd < 0)
+        {
+            printf("socket() fail[%d].\n", errno);
+            return -1;
+        }
+
+        struct sockaddr_un cli_addr;
+        memset(&cli_addr, 0, sizeof(cli_addr));
+        cli_addr.sun_family = AF_LOCAL;
+        strcpy(cli_addr.sun_path, GNSS_SOCK_PATH);
+        if(connect(sock_listen_fd, (struct sockaddr *)&cli_addr, sizeof(cli_addr)))
+        {
+            printf("connect() fail[%d].\n", errno);
+            close(sock_listen_fd);
+            sock_listen_fd = -1;
+            return -1;
+        }
+    }
+
+    char buff[100] = {0};
+    if(cmd == GNSS_CMD_INIT) {
+        if(arg) {
+            int type = atoi((char*)arg);
+            sprintf(buff, "gnss_init:%d", type);
+        } else {
+            return -1;
+        }
+    } else if(cmd == GNSS_CMD_DEINIT) {
+        sprintf(buff, "gnss_deinit");
+    } else if(cmd == GNSS_CMD_SETTING) {
+        sprintf(buff, "gnss_setting:%s", (char*)arg);
+    } else if(cmd == GNSS_CMD_DL) {
+        sprintf(buff, "gnss_dl:%s", (char*)arg);
+    } else {
+        printf("Unknown cmd.\n");
+        return -1;
+    }
+
+    mbtk_write(sock_listen_fd, buff, strlen(buff));
+
+    int len = 0;
+    char *rsp = NULL;
+    while(1) {
+        memset(buff, 0, sizeof(buff));
+        len = read(sock_listen_fd, buff, sizeof(buff));
+        if(len > 0) {
+            rsp = buff;
+            if(rsp[len - 1] == MBTK_IND_END_FLAG) {
+                rsp[len - 1] = '\0';
+            }
+            if(rsp[0] == MBTK_IND_START_FLAG) {
+                rsp++;
+            }
+            printf("RSP : %s\n", rsp);
+            if(cmd == GNSS_CMD_INIT) {
+                if(memcmp(rsp, "gnss_init", 9) == 0) {
+                    return atoi(rsp + 10);
+                } else {
+                    printf("gnss_init response error.\n");
+                    return -1;
+                }
+            } else if(cmd == GNSS_CMD_DEINIT) {
+                if(memcmp(rsp, "gnss_deinit", 11) == 0) {
+                    return atoi(rsp + 12);
+                } else {
+                    printf("gnss_deinit response error.\n");
+                    return -1;
+                }
+            } else if(cmd == GNSS_CMD_SETTING) {
+                if(memcmp(rsp, "gnss_setting", 12) == 0) {
+                    return atoi(rsp + 13);
+                } else {
+                    printf("gnss_setting response error.\n");
+                    return -1;
+                }
+            } else if(cmd == GNSS_CMD_DL) {
+                if(memcmp(rsp, "gnss_dl", 7) == 0) {
+                    return atoi(rsp + 8);
+                } else {
+                    printf("gnss_dl response error.\n");
+                    return -1;
+                }
+            } else {
+                printf("Unknown response.\n");
+                return -1;
+            }
+        } else if(len == 0) {
+            printf("RSP is null.\n");
+            return -1;
+        } else {
+            printf("read = %d:errno = %d\n", len, errno);
+        }
+    }
+}
+
+int main(int argc, char *argv[])
+{
+    int ret = 0;
+    if(argc == 2) {
+        if(strcmp(argv[1], "gnss_deinit")) {
+            help();
+            return -1;
+        }
+
+        ret = cmd_process(GNSS_CMD_DEINIT, NULL);
+    } else if(argc == 3) {
+        if(strcmp(argv[1], "gnss_init") == 0) {
+            ret = cmd_process(GNSS_CMD_INIT, argv[2]);
+        } else if(strcmp(argv[1], "gnss_setting") == 0) {
+            ret = cmd_process(GNSS_CMD_SETTING, argv[2]);
+        } else if(strcmp(argv[1], "gnss_dl") == 0) {
+            ret = cmd_process(GNSS_CMD_DL, argv[2]);
+        } else {
+            help();
+            return -1;
+        }
+    } else {
+        help();
+        return -1;
+    }
+
+    // printf("Error:%s\n", strerror(EBADF));
+
+    printf("Result : %d\n", ret);
+    return 0;
+}
+