Add basic change for v1453

Change-Id: I9497a61bbc3717f66413794a4e7dee0347c0bc33
diff --git a/mbtk/test/others/uart_read_demo.c b/mbtk/test/others/uart_read_demo.c
new file mode 100755
index 0000000..1b7eea4
--- /dev/null
+++ b/mbtk/test/others/uart_read_demo.c
@@ -0,0 +1,185 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <string.h>
+
+#include "mbtk_type.h"
+#include "mbtk_log.h"
+
+#define DATABITS    CS8
+#define STOPBITS    0
+#define PARITYON    0
+#define PARITY      0
+
+int uart_baud_get(int baud)
+{
+    int rate = 0;
+    switch(baud)
+    {
+        case 300:
+            rate = B300;
+            break;
+        case 600:
+            rate = B600;
+            break;
+        case 1200:
+            rate = B1200;
+            break;
+        case 2400:
+            rate = B2400;
+            break;
+        case 4800:
+            rate = B4800;
+            break;
+        case 9600:
+            rate = B9600;
+            break;
+        case 19200:
+            rate = B19200;
+            break;
+        case 38400:
+            rate = B38400;
+            break;
+        case 57600:
+            rate = B57600;
+            break;
+        case 115200:
+            rate = B115200;
+            break;
+        case 230400:
+            rate = B230400;
+            break;
+        case 460800:
+            rate = B460800;
+            break;
+        case 921600:
+            rate = B921600;
+            break;
+        case 1500000:
+            rate = B1500000;
+            break;
+        case 2000000:
+            rate = B2000000;
+            break;
+        case 3000000:
+            rate = B3000000;
+            break;
+        case 4000000:
+            rate = B4000000;
+            break;
+        default:
+            rate = B115200;
+            break;
+    }
+
+    return rate;
+}
+
+int gnss_port_open(const char *dev, int flag, int baud, bool tty)
+{
+
+    int fd = -1;
+    if((fd = open(dev, flag)) < 0)
+    {
+        printf("Open %s fail errno = [%d].\n", dev, errno);
+        return -1;
+    }
+
+    printf("Open %s success.\n", dev);
+    if (tty)
+    {
+        int rate = uart_baud_get(baud);
+        /* set newtio */
+        struct termios newtio;
+        memset(&newtio, 0, sizeof(newtio));
+        //(void)fcntl(fd, F_SETFL, 0);
+        /* no flow control for uart by default */
+        newtio.c_cflag = rate | DATABITS | STOPBITS | PARITYON | PARITY | CLOCAL | CREAD;
+        newtio.c_iflag = IGNPAR;
+        //newtio.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON);
+        newtio.c_oflag = 0;
+        newtio.c_lflag = 0;    /* disable ECHO, ICANON, etc... */
+
+        newtio.c_cc[VERASE]   = 0x8;      /* del */
+        newtio.c_cc[VEOF]     = 4;      /* Ctrl-d */
+        newtio.c_cc[VMIN]     = 1;      /* blocking read until 1 character arrives */
+        newtio.c_cc[VEOL]     = 0xD;      /* '\0' */
+
+        tcflush(fd, TCIOFLUSH);
+        tcsetattr(fd, TCSANOW, &newtio);
+    }
+
+    return fd;
+}
+
+int main(int argc, char *argv[])
+{
+    if(argc != 2) {
+        printf("%s <dev>\n", argv[1]);
+        return -1;
+    }
+
+    int fd = gnss_port_open(argv[1], O_RDWR | O_NONBLOCK | O_NOCTTY, 115200, TRUE);
+    if(fd < 0) {
+        printf("gnss_port_open(%s) fail:%d\n", argv[1], errno);
+        return -1;
+    }
+
+    char buff[1024];
+    int len, ret;
+    fd_set fdr;
+    FD_ZERO(&fdr);
+    FD_SET(fd, &fdr);
+
+    while(1) {
+        ret = select(fd + 1, &fdr, NULL, 0, NULL);
+        if (ret < 0)
+        {
+            if (errno == EINTR)
+            {
+                continue;
+            }
+            printf("select error, errno = %d (%s)\n", errno, strerror(errno));
+            break;
+        }
+        else if (ret == 0)
+        {
+            printf("select ret == 0\n");
+            break;
+        }
+
+        if (FD_ISSET(fd, &fdr))
+        {
+            memset(buff, 0, sizeof(buff));
+            len = read(fd, buff, sizeof(buff));
+            if(len > 0) {
+
+
+            } else if(len ==0 ){
+                printf("Read end : len = 0\n");
+                break;
+            } else {
+                if(EAGAIN == errno) {
+                    usleep(50000);
+                    continue;
+                } else {
+                    printf("Read ret = -1 ,errno = %d\n", errno);
+                    break;
+                }
+            }
+        }
+        else
+        {
+            printf("Unknown select event.\n");
+            continue;
+        }
+    }
+
+    printf("exit.\n");
+    return 0;
+}
+
+