Add mbtk_gnssd

Change-Id: I2e3bc0b7c9cc310c04a4fbcbe809c525b0cfafbe
diff --git a/mbtk/mbtk_gnssd/gnss_info.h b/mbtk/mbtk_gnssd/gnss_info.h
new file mode 100755
index 0000000..0e7d4fa
--- /dev/null
+++ b/mbtk/mbtk_gnssd/gnss_info.h
@@ -0,0 +1,75 @@
+/*
+* gnss_info.h
+*
+* GNSS informations header.
+*
+* Author : lb
+* Date   : 2024/5/20 15:22:46
+*/
+#ifndef _GNSS_INFO_H
+#define _GNSS_INFO_H
+#include "mbtk_type.h"
+
+#define GNSS_ID_6228 "6228"
+#define GNSS_ID_5311 "5311"
+
+#define GNSS_PRINT_PORT_UART1       1           // 1
+#define GNSS_PRINT_PORT_USB_NMEA    (1<<1)      // 2
+#define GNSS_PRINT_PORT_USB_AT      (1<<2)      // 4
+#define GNSS_PRINT_PORT_TTY_AT      (1<<3)      // 8
+
+typedef enum {
+    GNSS_ERR_OK,
+    GNSS_ERR_UNSUPPORT,
+    GNSS_ERR_TIMEOUT,
+    GNSS_ERR_ARG,
+    GNSS_ERR_CHECKSUM,
+
+    GNSS_ERR_UNKNOWN
+} gnss_err_enum;
+
+typedef int (*gnss_dev_open_func)();
+typedef int (*gnss_dev_close_func)();
+typedef int (*gnss_open_func)(const char *dev);
+typedef int (*gnss_close_func)(int fd);
+typedef int (*gnss_fw_dl_func)(int fd);
+typedef void (*gnss_dl_read_cb_func)(const void *data, int data_len);
+typedef gnss_err_enum (*gnss_set_func)(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
+typedef void (*gnss_set_cb_func)(const void *data, int data_len);
+
+typedef enum {
+    GNSS_TYPE_6228 = 0,
+    GNSS_TYPE_5311,
+} gnss_id_enum;
+
+typedef enum {
+    GNSS_STATE_CLOSE,       // GNSS is closed.
+    GNSS_STATE_CLOSING,       // GNSS is closing.
+    GNSS_STATE_OPEN,        // GNSS is opened.
+    GNSS_STATE_DOWNLOAD,    // GNSS is downloading.
+    GNSS_STATE_READY,       // GNSS is ready.
+} gnss_state_enum;
+
+typedef struct {
+    gnss_id_enum gnss_id;
+    char dev_name[32];
+    bool auto_open;        // Should auto open gnss?
+    bool auto_dl_fw;       // Should download firmware int the first?
+    int fd;                // GNSS uart fd.
+    int exit_fd[2];        // Use to exit thread.
+    gnss_state_enum state;
+    uint32 print_port;
+    pthread_t read_pid;     // Read NMEA thread.
+
+    // GNSS functions.
+    gnss_dev_open_func gnss_dev_open;
+    gnss_dev_close_func gnss_dev_close;
+    gnss_open_func gnss_open;
+    gnss_close_func gnss_close;
+    gnss_fw_dl_func gnss_fw_dl;
+    gnss_dl_read_cb_func gnss_dl_read_cb;
+    gnss_set_func gnss_set;
+    gnss_set_cb_func gnss_set_cb;
+} gnss_info_t;
+
+#endif /* _GNSS_INFO_H */