Add gnss 8122 support.

Change-Id: I71457eea400e55d41c59a12549b2eec5cc5e5183
diff --git a/mbtk/mbtk_gnssd/Makefile b/mbtk/mbtk_gnssd/Makefile
index acd84e9..70ac7ef 100755
--- a/mbtk/mbtk_gnssd/Makefile
+++ b/mbtk/mbtk_gnssd/Makefile
@@ -24,7 +24,7 @@
 #MY_FILES_PATH += $(LOCAL_PATH)/platform/linux
 #endif
 #LOCAL_SRC_FILES = $(wildcard *.c) $(wildcard *.cpp)
-LOCAL_SRC_FILES = gnss_main.c gnss_nmea.c gnss_6228.c gnss_ubus.c gnss_utils.c
+LOCAL_SRC_FILES = gnss_main.c gnss_nmea.c gnss_6228.c gnss_ubus.c gnss_utils.c gnss_hd8122.c
 OBJS = $(patsubst %.c, %.o, $(patsubst %.cpp, %.o, $(LOCAL_SRC_FILES)))
 $(info OBJS = $(OBJS))
 
diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.c b/mbtk/mbtk_gnssd/gnss_hd8122.c
new file mode 100755
index 0000000..dc36267
--- /dev/null
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.c
@@ -0,0 +1,69 @@
+/*
+*    gnss_hd8122.c
+*
+*    HD8122 GNSS source.
+*
+*/
+/******************************************************************************
+
+                          EDIT HISTORY FOR FILE
+
+  WHEN        WHO       WHAT,WHERE,WHY
+--------    --------    -------------------------------------------------------
+2024/6/14     LiuBin      Initial version
+
+******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <fcntl.h>
+
+#include "mbtk_log.h"
+#include "mbtk_type.h"
+#include "mbtk_gpio.h"
+#include "gnss_utils.h"
+#include "gnss_hd8122.h"
+
+#define UART_BITRATE_NMEA_DEF_FW    115200   // Default bitrate.
+#define GNSS_POWER_GPIO 43
+
+static pthread_cond_t read_cond;
+static pthread_mutex_t read_mutex;
+
+
+int gnss_8122_dev_open()
+{
+    return mbtk_gpio_value_set(GNSS_POWER_GPIO, MBTK_GPIO_DIRECT_OUT, 1);
+}
+
+int gnss_8122_dev_close()
+{
+    return mbtk_gpio_value_set(GNSS_POWER_GPIO, MBTK_GPIO_DIRECT_OUT, 0);
+}
+
+int gnss_8122_open(const char *dev)
+{
+    pthread_mutex_init(&read_mutex, NULL);
+    pthread_cond_init(&read_cond, NULL);
+    return gnss_port_open(dev, O_RDWR | O_NONBLOCK | O_NOCTTY, UART_BITRATE_NMEA_DEF_FW, TRUE);
+}
+
+int gnss_8122_close(int fd)
+{
+    pthread_mutex_destroy(&read_mutex);
+    pthread_cond_destroy(&read_cond);
+    return gnss_port_close(fd);
+}
+
+int gnss_8122_fw_dl()
+{
+    return 0;
+}
+
+
+gnss_err_enum gnss_8122_set(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len)
+{
+    return GNSS_ERR_OK;
+}
+
diff --git a/mbtk/mbtk_gnssd/gnss_hd8122.h b/mbtk/mbtk_gnssd/gnss_hd8122.h
new file mode 100755
index 0000000..ca938f3
--- /dev/null
+++ b/mbtk/mbtk_gnssd/gnss_hd8122.h
@@ -0,0 +1,31 @@
+/*
+* gnss_hd8122.h
+*
+* UC6228CI Header.
+*
+* Author : lb
+* Date   : 2024/5/20 17:53:51
+*/
+#ifndef _GNSS_HD8122_H
+#define _GNSS_HD8122_H
+#include "gnss_info.h"
+#include "mbtk_type.h"
+
+int gnss_8122_dev_open();
+
+int gnss_8122_dev_close();
+
+int gnss_8122_open();
+
+int gnss_8122_close();
+
+int gnss_8122_fw_dl();
+
+//void gnss_8122_dl_read_cb(const void *data, int data_len);
+
+gnss_err_enum gnss_8122_set(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
+
+//void gnss_8122_set_cb(const void *data, int data_len);
+
+#endif /* _GNSS_HD8122_H */
+
diff --git a/mbtk/mbtk_gnssd/gnss_info.h b/mbtk/mbtk_gnssd/gnss_info.h
index 0e7d4fa..a292db7 100755
--- a/mbtk/mbtk_gnssd/gnss_info.h
+++ b/mbtk/mbtk_gnssd/gnss_info.h
@@ -12,6 +12,7 @@
 
 #define GNSS_ID_6228 "6228"
 #define GNSS_ID_5311 "5311"
+#define GNSS_ID_8122 "8122"
 
 #define GNSS_PRINT_PORT_UART1       1           // 1
 #define GNSS_PRINT_PORT_USB_NMEA    (1<<1)      // 2
@@ -40,6 +41,7 @@
 typedef enum {
     GNSS_TYPE_6228 = 0,
     GNSS_TYPE_5311,
+    GNSS_TYPE_8122
 } gnss_id_enum;
 
 typedef enum {
diff --git a/mbtk/mbtk_gnssd/gnss_main.c b/mbtk/mbtk_gnssd/gnss_main.c
index 8e25f8e..3922f8f 100755
--- a/mbtk/mbtk_gnssd/gnss_main.c
+++ b/mbtk/mbtk_gnssd/gnss_main.c
@@ -14,6 +14,7 @@
 #include "gnss_info.h"
 
 #include "gnss_6228.h"
+#include "gnss_hd8122.h"
 
 #define GNSS_DEBUG 1
 
@@ -55,7 +56,7 @@
 
 static void help()
 {
-    LOGD("mbtk_gnssd <6228/...> <gnss_dev> <0/1>");
+    LOGD("mbtk_gnssd <6228/8122...> <gnss_dev> <0/1>");
 }
 
 static int arg_check(int argc, char *argv[])
@@ -64,8 +65,8 @@
         goto check_fail;
     }
 
-    // Only support 6228.
-    if(strcmp(argv[1], GNSS_ID_6228)) {
+    // Only support 6228/8122.
+    if(strcmp(argv[1], GNSS_ID_6228) && strcmp(argv[1], GNSS_ID_8122)) {
         goto check_fail;
     }
 
@@ -730,6 +731,18 @@
         gnss_info.gnss_dl_read_cb = gnss_6228_dl_read_cb;
         gnss_info.gnss_set = gnss_6228_set;
         gnss_info.gnss_set_cb = gnss_6228_set_cb;
+    } else if(!strcmp(argv[1], GNSS_ID_8122)) {
+        gnss_info.gnss_id = GNSS_TYPE_8122;
+        gnss_info.auto_open = (bool)atoi(argv[3]);
+        gnss_info.auto_dl_fw = FALSE;
+        gnss_info.gnss_dev_open = gnss_8122_dev_open;
+        gnss_info.gnss_dev_close = gnss_8122_dev_close;
+        gnss_info.gnss_open = gnss_8122_open;
+        gnss_info.gnss_close = gnss_8122_close;
+        gnss_info.gnss_fw_dl = gnss_8122_fw_dl;
+        gnss_info.gnss_dl_read_cb = NULL;
+        gnss_info.gnss_set = gnss_8122_set;
+        gnss_info.gnss_set_cb = NULL;
     } else {
         LOGE("No support : %s", argv[1]);
         return -1;