blob: e781103d133bba1b7ddb9c7673e2c18d45eaa447 [file] [log] [blame]
b.liu8f231a12024-05-31 17:55:06 +08001/*
2* gnss_info.h
3*
4* GNSS informations header.
5*
6* Author : lb
7* Date : 2024/5/20 15:22:46
8*/
9#ifndef _GNSS_INFO_H
10#define _GNSS_INFO_H
11#include "mbtk_type.h"
12
13#define GNSS_ID_6228 "6228"
14#define GNSS_ID_5311 "5311"
b.liuf9fbfa12024-06-14 15:53:59 +080015#define GNSS_ID_8122 "8122"
b.liu8f231a12024-05-31 17:55:06 +080016
17#define GNSS_PRINT_PORT_UART1 1 // 1
18#define GNSS_PRINT_PORT_USB_NMEA (1<<1) // 2
19#define GNSS_PRINT_PORT_USB_AT (1<<2) // 4
20#define GNSS_PRINT_PORT_TTY_AT (1<<3) // 8
21
b.liud0ba7152024-06-19 14:47:21 +080022#define GNSS_SET_SYSCFG_GPS (1)
23#define GNSS_SET_SYSCFG_BDS (1<<1)
24#define GNSS_SET_SYSCFG_GLO (1<<2)
25#define GNSS_SET_SYSCFG_GAL (1<<3)
26
27#define GNSS_SET_MSGCFG_RMC (1)
28#define GNSS_SET_MSGCFG_VTG (1<<1)
29#define GNSS_SET_MSGCFG_GGA (1<<2)
30#define GNSS_SET_MSGCFG_GSA (1<<3)
31#define GNSS_SET_MSGCFG_GSV (1<<4)
32#define GNSS_SET_MSGCFG_GLL (1<<5)
33#define GNSS_SET_MSGCFG_ZDA (1<<6)
34#define GNSS_SET_MSGCFG_GST (1<<7)
35#define GNSS_SET_MSGCFG_GRS (1<<8)
36#define GNSS_SET_MSGCFG_TXT (1<<9)
37#define GNSS_SET_MSGCFG_DHV (1<<10)
38#define GNSS_SET_MSGCFG_DTM (1<<11)
39#define GNSS_SET_MSGCFG_NAVPOS (1<<12)
40#define GNSS_SET_MSGCFG_NAVVEL (1<<13)
41#define GNSS_SET_MSGCFG_NAVTIME (1<<14)
42#define GNSS_SET_MSGCFG_NAVACC (1<<15)
43#define GNSS_SET_MSGCFG_LSF (1<<16)
44#define GNSS_SET_MSGCFG_ANTSTAT (1<<17)
45#define GNSS_SET_MSGCFG_ANTSTAT1 (1<<18)
46#define GNSS_SET_MSGCFG_NOTICE (1<<19)
47#define GNSS_SET_MSGCFG_ABNORMAL (1<<20)
48#define GNSS_SET_MSGCFG_EPHABNORMAL (1<<21)
49
b.liu8f231a12024-05-31 17:55:06 +080050typedef enum {
51 GNSS_ERR_OK,
52 GNSS_ERR_UNSUPPORT,
53 GNSS_ERR_TIMEOUT,
54 GNSS_ERR_ARG,
55 GNSS_ERR_CHECKSUM,
b.liu5f950c52024-06-15 20:13:12 +080056 GNSS_ERR_SET_BUSY,
b.liu8f231a12024-05-31 17:55:06 +080057
58 GNSS_ERR_UNKNOWN
59} gnss_err_enum;
60
b.liud0ba7152024-06-19 14:47:21 +080061typedef enum {
62 GNSS_RESET_TYPE_HOT = 1,
63 GNSS_RESET_TYPE_WARM,
64 GNSS_RESET_TYPE_COLD
65} gnss_reset_type_enum;
66
67typedef enum {
68 GNSS_MEMAVER_TYPE_3_0 = 0,
69 GNSS_MEMAVER_TYPE_4_0,
70 GNSS_MEMAVER_TYPE_4_1
71} gnss_memaver_type_enum;
72
b.liu8f231a12024-05-31 17:55:06 +080073typedef int (*gnss_dev_open_func)();
74typedef int (*gnss_dev_close_func)();
75typedef int (*gnss_open_func)(const char *dev);
76typedef int (*gnss_close_func)(int fd);
b.liu99c645d2024-06-20 10:52:15 +080077typedef int (*gnss_fw_dl_func)(int fd, const char *dev);
b.liu8f231a12024-05-31 17:55:06 +080078typedef void (*gnss_dl_read_cb_func)(const void *data, int data_len);
79typedef gnss_err_enum (*gnss_set_func)(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
80typedef void (*gnss_set_cb_func)(const void *data, int data_len);
81
82typedef enum {
83 GNSS_TYPE_6228 = 0,
84 GNSS_TYPE_5311,
b.liuf9fbfa12024-06-14 15:53:59 +080085 GNSS_TYPE_8122
b.liu8f231a12024-05-31 17:55:06 +080086} gnss_id_enum;
87
88typedef enum {
89 GNSS_STATE_CLOSE, // GNSS is closed.
90 GNSS_STATE_CLOSING, // GNSS is closing.
91 GNSS_STATE_OPEN, // GNSS is opened.
92 GNSS_STATE_DOWNLOAD, // GNSS is downloading.
93 GNSS_STATE_READY, // GNSS is ready.
94} gnss_state_enum;
95
wangyouqiang9ee6eaa2024-06-17 13:43:45 +080096typedef enum {
97 GNSS_RESULT_STATE_OPEN_SUCCESS,
98 GNSS_RESULT_STATE_OPEN_FAIL,
99 GNSS_RESULT_STATE_CLOSE_SUCCESS,
100 GNSS_RESULT_STATE_CLOSE_FAIL,
101 GNSS_RESULT_STATE_SET_SUCCESS,
102 GNSS_RESULT_STATE_SET_FAIL,
103 GNSS_RESULT_STATE_UNSUPPORT,
104 GNSS_RESULT_STATE_UNKNOWN_ERROR,
105} gnss_result_enum;
106
b.liu8f231a12024-05-31 17:55:06 +0800107typedef struct {
108 gnss_id_enum gnss_id;
109 char dev_name[32];
110 bool auto_open; // Should auto open gnss?
111 bool auto_dl_fw; // Should download firmware int the first?
b.liu99c645d2024-06-20 10:52:15 +0800112 bool dl_befor_open; // Should download firmware before open device?
b.liu8f231a12024-05-31 17:55:06 +0800113 int fd; // GNSS uart fd.
114 int exit_fd[2]; // Use to exit thread.
115 gnss_state_enum state;
116 uint32 print_port;
117 pthread_t read_pid; // Read NMEA thread.
118
119 // GNSS functions.
120 gnss_dev_open_func gnss_dev_open;
121 gnss_dev_close_func gnss_dev_close;
122 gnss_open_func gnss_open;
123 gnss_close_func gnss_close;
124 gnss_fw_dl_func gnss_fw_dl;
125 gnss_dl_read_cb_func gnss_dl_read_cb;
126 gnss_set_func gnss_set;
127 gnss_set_cb_func gnss_set_cb;
128} gnss_info_t;
129
b.liu5f950c52024-06-15 20:13:12 +0800130int gnss_init(uint32 print_port);
131
132int gnss_deinit();
133
134int gnss_set(const void* buf, unsigned int buf_len, void *cmd_rsp, int cmd_rsp_len);
135
b.liu8f231a12024-05-31 17:55:06 +0800136#endif /* _GNSS_INFO_H */