Add GNSS N50DB support.

Change-Id: Id65a69a0a7c149ef1e75db01e544f94b4f178d45
diff --git a/mbtk/mbtk_gnssd/Makefile b/mbtk/mbtk_gnssd/Makefile
old mode 100644
new mode 100755
index 87611b1..6327047
--- a/mbtk/mbtk_gnssd/Makefile
+++ b/mbtk/mbtk_gnssd/Makefile
@@ -31,6 +31,7 @@
 					gnss_utils.c \
 					gnss_hd8122.c \
 					gnss_asr5311.c \
+					gnss_n50db.c \
 					hd8122_dl/port.c \
 					hd8122_dl/fwup.c
 
diff --git a/mbtk/mbtk_gnssd/gnss_info.h b/mbtk/mbtk_gnssd/gnss_info.h
index 744aba5..34aa6b1 100755
--- a/mbtk/mbtk_gnssd/gnss_info.h
+++ b/mbtk/mbtk_gnssd/gnss_info.h
@@ -14,6 +14,7 @@
 #define GNSS_ID_6228 "6228"
 #define GNSS_ID_5311 "5311"
 #define GNSS_ID_8122 "8122"
+#define GNSS_ID_N50DB "N50DB"
 
 #define GNSS_PRINT_PORT_UART1       1           // 1
 #define GNSS_PRINT_PORT_USB_NMEA    (1<<1)      // 2
@@ -72,7 +73,8 @@
 typedef enum {
     GNSS_TYPE_6228 = 0,
     GNSS_TYPE_5311,
-    GNSS_TYPE_8122
+    GNSS_TYPE_8122,
+    GNSS_TYPE_N50DB
 } gnss_id_enum;
 
 typedef enum {
diff --git a/mbtk/mbtk_gnssd/gnss_main.c b/mbtk/mbtk_gnssd/gnss_main.c
index c4f2d8d..7c6191b 100755
--- a/mbtk/mbtk_gnssd/gnss_main.c
+++ b/mbtk/mbtk_gnssd/gnss_main.c
@@ -18,7 +18,7 @@
 #include "gnss_6228.h"
 #include "gnss_hd8122.h"
 #include "gnss_asr5311.h"
-
+#include "gnss_n50db.h"
 
 #define GNSS_DEBUG 1
 #define GNSS_UBUS_ENABLE 1
@@ -72,7 +72,7 @@
 
 static void help()
 {
-    LOGD("mbtk_gnssd <6228/8122/5311> <gnss_dev> <0/1>");
+    LOGD("mbtk_gnssd <6228/8122/5311/N50DB> <gnss_dev> <0/1>");
 }
 
 static int arg_check(int argc, char *argv[])
@@ -83,7 +83,8 @@
     }
 
     // Only support 6228/8122/5311.
-    if(strcmp(argv[1], GNSS_ID_6228) && strcmp(argv[1], GNSS_ID_8122) && strcmp(argv[1], GNSS_ID_5311)) {
+    if(strcmp(argv[1], GNSS_ID_6228) && strcmp(argv[1], GNSS_ID_8122) && strcmp(argv[1], GNSS_ID_5311)
+        && strcmp(argv[1], GNSS_ID_N50DB)) {
         LOGE("argv[1] = %s", argv[1]);
         goto check_fail;
     }
@@ -367,7 +368,10 @@
 #endif
 
     if(!nmea_check(nmea, data_len)) {
-        LOGD("NO-NMEA:%s", nmea);
+        // No print "$HOSTSLEEP".
+        if(memcmp(nmea, "$HOSTSLEEP", strlen("$HOSTSLEEP"))) {
+            LOGD("NO-NMEA:%s", nmea);
+        }
 #if GNSS_DEBUG
         log_save(nmea_log_fd, "/**/", 4);
         log_save(nmea_log_fd, nmea, data_len);
@@ -450,7 +454,9 @@
                             gnss_nmea_process(nmea_buff, nmea_buff_len);
                         } else if(nmea_buff_len > 0) {
                             nmea_buff[nmea_buff_len] = '\0';
-                            LOGD("NO-NMEA:%s", nmea_buff);
+                            if(memcmp(nmea_buff, "$HOSTSLEEP", strlen("$HOSTSLEEP"))) {
+                                LOGD("NO-NMEA:%s", nmea_buff);
+                            }
 #if GNSS_DEBUG
                             log_save(nmea_log_fd, "/**/", 4);
                             log_save(nmea_log_fd, nmea_buff, nmea_buff_len);
@@ -867,6 +873,7 @@
 
 int gnss_dl_fw(const char* fw_name, void *rsp, int rsp_len)
 {
+    // Only 8122 support download fw.
     if(gnss_info.gnss_id != GNSS_TYPE_8122) {
         return GNSS_ERR_UNSUPPORT;
     }
@@ -884,7 +891,7 @@
             return gnss_info.gnss_fw_dl(gnss_info.fd, fw_name, gnss_info.dev_name);
         }
     } else {
-        return GNSS_ERR_UNKNOWN;
+        return GNSS_ERR_UNSUPPORT;
     }
 }
 
@@ -1041,6 +1048,19 @@
         gnss_info.gnss_dl_read_cb = NULL;
         gnss_info.gnss_set = gnss_5311_set;
         gnss_info.gnss_set_cb = gnss_5311_set_cb;
+    } else if(!strcmp(argv[1], GNSS_ID_N50DB)) {
+        gnss_info.gnss_id = GNSS_TYPE_N50DB;
+        gnss_info.auto_open = (bool)atoi(argv[3]);
+        gnss_info.auto_dl_fw = FALSE;
+        gnss_info.dl_befor_open = FALSE;
+        gnss_info.gnss_dev_open = gnss_n50db_dev_open;
+        gnss_info.gnss_dev_close = gnss_n50db_dev_close;
+        gnss_info.gnss_open = gnss_n50db_open;
+        gnss_info.gnss_close = gnss_n50db_close;
+        gnss_info.gnss_fw_dl = gnss_n50db_fw_dl;
+        gnss_info.gnss_dl_read_cb = NULL;
+        gnss_info.gnss_set = gnss_n50db_set;
+        gnss_info.gnss_set_cb = gnss_n50db_set_cb;
     } else {
         LOGE("No support : %s", argv[1]);
         return -1;
diff --git a/mbtk/mbtk_gnssd/gnss_n50db.c b/mbtk/mbtk_gnssd/gnss_n50db.c
new file mode 100755
index 0000000..8fdbdca
--- /dev/null
+++ b/mbtk/mbtk_gnssd/gnss_n50db.c
@@ -0,0 +1,64 @@
+/*
+*    gnss_n50db.c
+*
+*    MBTK N50-DB GNSS support source file.
+*
+*/
+/******************************************************************************
+
+                          EDIT HISTORY FOR FILE
+
+  WHEN        WHO       WHAT,WHERE,WHY
+--------    --------    -------------------------------------------------------
+2024/7/18     LiuBin      Initial version
+
+******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <pthread.h>
+
+#include "gnss_n50db.h"
+#include "gnss_utils.h"
+#include "mbtk_log.h"
+
+#define UART_BITRATE_NMEA_DEF_FW    115200   // Default bitrate.
+
+int gnss_n50db_dev_open()
+{
+    return 0;
+}
+
+int gnss_n50db_dev_close(int fd)
+{
+    return 0;
+}
+
+int gnss_n50db_open(const char *dev)
+{
+    return gnss_port_open(dev, O_RDWR | O_NONBLOCK | O_NOCTTY, UART_BITRATE_NMEA_DEF_FW, TRUE);
+}
+
+int gnss_n50db_close(int fd)
+{
+    return gnss_port_close(fd);
+}
+
+int gnss_n50db_fw_dl(int fd, const char *fw_name, const char *dev)
+{
+    return GNSS_ERR_UNSUPPORT;
+}
+
+void gnss_n50db_set_cb(const void *data, int data_len)
+{
+    UNUSED(data);
+    UNUSED(data_len);
+}
+
+gnss_err_enum gnss_n50db_set(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len)
+{
+    return GNSS_ERR_UNSUPPORT;
+}
+
diff --git a/mbtk/mbtk_gnssd/gnss_n50db.h b/mbtk/mbtk_gnssd/gnss_n50db.h
new file mode 100755
index 0000000..41267c4
--- /dev/null
+++ b/mbtk/mbtk_gnssd/gnss_n50db.h
@@ -0,0 +1,30 @@
+/*
+* gnss_n50db.h
+*
+* MBTK N50-DB GNSS support header file.
+*
+* Author : lb
+* Date   : 2024/7/18 11:28:32
+*/
+#ifndef __GNSS_N50DB_H
+#define __GNSS_N50DB_H
+#include "gnss_info.h"
+#include "mbtk_type.h"
+
+
+int gnss_n50db_dev_open();
+
+int gnss_n50db_dev_close(int fd);
+
+int gnss_n50db_open(const char *dev);
+
+int gnss_n50db_close(int fd);
+
+int gnss_n50db_fw_dl(int fd, const char *fw_name, const char *dev);
+
+void gnss_n50db_set_cb(const void *data, int data_len);
+
+gnss_err_enum gnss_n50db_set(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
+
+
+#endif /* __GNSS_N50DB_H */