blob: 2ce1f1621da352f0b30e19b906cc9069e91e6d9b [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"
b.liue77ac3a2024-07-17 17:36:57 +080012#include "mbtk_gnss.h"
b.liu8f231a12024-05-31 17:55:06 +080013
14#define GNSS_ID_6228 "6228"
15#define GNSS_ID_5311 "5311"
b.liuf9fbfa12024-06-14 15:53:59 +080016#define GNSS_ID_8122 "8122"
b.liu42f558e2024-07-18 14:06:49 +080017#define GNSS_ID_N50DB "N50DB"
b.liu8f231a12024-05-31 17:55:06 +080018
b.liud0ba7152024-06-19 14:47:21 +080019#define GNSS_SET_SYSCFG_GPS (1)
20#define GNSS_SET_SYSCFG_BDS (1<<1)
21#define GNSS_SET_SYSCFG_GLO (1<<2)
22#define GNSS_SET_SYSCFG_GAL (1<<3)
yq.wang40c242f2024-11-27 02:43:35 -080023#define GNSS_SET_SYSCFG_QZSS (1<<4)
24#define GNSS_SET_SYSCFG_SBAS (1<<5)
b.liud0ba7152024-06-19 14:47:21 +080025
yq.wang6a3437f2024-07-27 02:57:20 -070026#define GNSS_SET_FREQCFG_1 (1)
27#define GNSS_SET_FREQCFG_2 (2)
28#define GNSS_SET_FREQCFG_5 (5)
29#define GNSS_SET_FREQCFG_10 (10)
30
yq.wangd8ded5e2024-08-16 03:27:49 -070031#define GNSS_SET_EVEL_5 (5)
32#define GNSS_SET_EVEL_15 (15)
33
34#define GNSS_SET_NMEAVER_3_01 (0)
35#define GNSS_SET_NMEAVER_4_00 (1)
36#define GNSS_SET_NMEAVER_4_10 (2)
37
b.liud0ba7152024-06-19 14:47:21 +080038#define GNSS_SET_MSGCFG_RMC (1)
39#define GNSS_SET_MSGCFG_VTG (1<<1)
40#define GNSS_SET_MSGCFG_GGA (1<<2)
41#define GNSS_SET_MSGCFG_GSA (1<<3)
42#define GNSS_SET_MSGCFG_GSV (1<<4)
43#define GNSS_SET_MSGCFG_GLL (1<<5)
44#define GNSS_SET_MSGCFG_ZDA (1<<6)
45#define GNSS_SET_MSGCFG_GST (1<<7)
46#define GNSS_SET_MSGCFG_GRS (1<<8)
47#define GNSS_SET_MSGCFG_TXT (1<<9)
48#define GNSS_SET_MSGCFG_DHV (1<<10)
49#define GNSS_SET_MSGCFG_DTM (1<<11)
50#define GNSS_SET_MSGCFG_NAVPOS (1<<12)
51#define GNSS_SET_MSGCFG_NAVVEL (1<<13)
52#define GNSS_SET_MSGCFG_NAVTIME (1<<14)
53#define GNSS_SET_MSGCFG_NAVACC (1<<15)
54#define GNSS_SET_MSGCFG_LSF (1<<16)
55#define GNSS_SET_MSGCFG_ANTSTAT (1<<17)
56#define GNSS_SET_MSGCFG_ANTSTAT1 (1<<18)
57#define GNSS_SET_MSGCFG_NOTICE (1<<19)
58#define GNSS_SET_MSGCFG_ABNORMAL (1<<20)
59#define GNSS_SET_MSGCFG_EPHABNORMAL (1<<21)
60
yq.wang9dd771b2024-09-13 23:38:40 -070061#define GNSS_AGPS_LEN_MAX 128
62
b.liu8f231a12024-05-31 17:55:06 +080063typedef enum {
b.liud0ba7152024-06-19 14:47:21 +080064 GNSS_RESET_TYPE_HOT = 1,
65 GNSS_RESET_TYPE_WARM,
66 GNSS_RESET_TYPE_COLD
67} gnss_reset_type_enum;
68
69typedef enum {
70 GNSS_MEMAVER_TYPE_3_0 = 0,
71 GNSS_MEMAVER_TYPE_4_0,
72 GNSS_MEMAVER_TYPE_4_1
73} gnss_memaver_type_enum;
74
b.liu8f231a12024-05-31 17:55:06 +080075typedef int (*gnss_dev_open_func)();
b.liu978f5432024-07-01 18:04:18 +080076typedef int (*gnss_dev_close_func)(int fd);
b.liu8f231a12024-05-31 17:55:06 +080077typedef int (*gnss_open_func)(const char *dev);
78typedef int (*gnss_close_func)(int fd);
yq.wang36222352024-11-06 03:31:24 -080079typedef int (*gnss_init_set_func)(int fd);
b.liudbc3f4b2024-06-25 18:22:24 +080080typedef int (*gnss_fw_dl_func)(int fd, const char *fw_name, const char *dev);
b.liu8f231a12024-05-31 17:55:06 +080081typedef void (*gnss_dl_read_cb_func)(const void *data, int data_len);
82typedef gnss_err_enum (*gnss_set_func)(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
83typedef void (*gnss_set_cb_func)(const void *data, int data_len);
yq.wang99db6f52024-09-12 01:58:48 -070084typedef gnss_err_enum (*gnss_agnss_get_eph_func)(const char *param);
85typedef gnss_err_enum (*gnss_agnss_inject_func)(int fd);
b.liu8f231a12024-05-31 17:55:06 +080086
87typedef enum {
88 GNSS_TYPE_6228 = 0,
89 GNSS_TYPE_5311,
b.liu42f558e2024-07-18 14:06:49 +080090 GNSS_TYPE_8122,
91 GNSS_TYPE_N50DB
b.liu8f231a12024-05-31 17:55:06 +080092} gnss_id_enum;
93
94typedef enum {
yq.wang99db6f52024-09-12 01:58:48 -070095 GNSS_EPH_GPS = 0,
96 GNSS_EPH_BDS,
97 GNSS_EPH_GLO,
98 GNSS_EPH_GPS_BDS,
yq.wang9dd771b2024-09-13 23:38:40 -070099 GNSS_EPH_GPS_GLO,
100
101 GNSS_EPH_CFG = 10, //get eph data by cfg parameters
yq.wang99db6f52024-09-12 01:58:48 -0700102} gnss_eph_data_enum;
103
104typedef enum {
b.liu8f231a12024-05-31 17:55:06 +0800105 GNSS_STATE_CLOSE, // GNSS is closed.
106 GNSS_STATE_CLOSING, // GNSS is closing.
107 GNSS_STATE_OPEN, // GNSS is opened.
108 GNSS_STATE_DOWNLOAD, // GNSS is downloading.
109 GNSS_STATE_READY, // GNSS is ready.
110} gnss_state_enum;
111
yq.wang9dd771b2024-09-13 23:38:40 -0700112typedef struct
113{
114 char host[GNSS_AGPS_LEN_MAX];
115 char id[GNSS_AGPS_LEN_MAX];
116 char passwd[GNSS_AGPS_LEN_MAX];
117}gnss_agps_info_t;
118
b.liu8f231a12024-05-31 17:55:06 +0800119typedef struct {
b.liue77ac3a2024-07-17 17:36:57 +0800120 int cli_fd;
121 uint32 ind_flag;
122} gnss_ind_info_t;
123
124typedef struct {
b.liu8f231a12024-05-31 17:55:06 +0800125 gnss_id_enum gnss_id;
126 char dev_name[32];
127 bool auto_open; // Should auto open gnss?
128 bool auto_dl_fw; // Should download firmware int the first?
b.liu99c645d2024-06-20 10:52:15 +0800129 bool dl_befor_open; // Should download firmware before open device?
b.liu8f231a12024-05-31 17:55:06 +0800130 int fd; // GNSS uart fd.
131 int exit_fd[2]; // Use to exit thread.
132 gnss_state_enum state;
133 uint32 print_port;
134 pthread_t read_pid; // Read NMEA thread.
135
136 // GNSS functions.
137 gnss_dev_open_func gnss_dev_open;
138 gnss_dev_close_func gnss_dev_close;
139 gnss_open_func gnss_open;
140 gnss_close_func gnss_close;
yq.wang36222352024-11-06 03:31:24 -0800141 gnss_init_set_func gnss_init_set;
b.liu8f231a12024-05-31 17:55:06 +0800142 gnss_fw_dl_func gnss_fw_dl;
143 gnss_dl_read_cb_func gnss_dl_read_cb;
144 gnss_set_func gnss_set;
145 gnss_set_cb_func gnss_set_cb;
yq.wang99db6f52024-09-12 01:58:48 -0700146 gnss_agnss_get_eph_func gnss_agnss_get_eph;
147 gnss_agnss_inject_func gnss_agnss_inject;
b.liu8f231a12024-05-31 17:55:06 +0800148} gnss_info_t;
149
b.liu5f950c52024-06-15 20:13:12 +0800150int gnss_init(uint32 print_port);
151
152int gnss_deinit();
153
154int gnss_set(const void* buf, unsigned int buf_len, void *cmd_rsp, int cmd_rsp_len);
155
b.liudbc3f4b2024-06-25 18:22:24 +0800156int gnss_dl_fw(const char* fw_name, void *rsp, int rsp_len);
157
yq.wang99db6f52024-09-12 01:58:48 -0700158int gnss_agnss_get_ept(const void* param);
159
160int gnss_agnss_inject(void);
161
b.liue77ac3a2024-07-17 17:36:57 +0800162int gnss_ind_set(int fd, int ind_type);
163
b.liu8f231a12024-05-31 17:55:06 +0800164#endif /* _GNSS_INFO_H */