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 */