blob: 1917ff13a17216a8c2f7f6204097deaab6ff6f59 [file] [log] [blame]
b.liuf9fbfa12024-06-14 15:53:59 +08001/*
2* gnss_hd8122.h
3*
4* UC6228CI Header.
5*
6* Author : lb
7* Date : 2024/5/20 17:53:51
8*/
9#ifndef _GNSS_HD8122_H
10#define _GNSS_HD8122_H
11#include "gnss_info.h"
12#include "mbtk_type.h"
13
b.liu5f950c52024-06-15 20:13:12 +080014#define HD8122_PACK_LEN_MIN 8
15#define HD8122_PACK_HEAD 0xD9F1
16
17typedef enum {
18 HD8122_ID_TYPE_NAV = 0x01,
19 HD8122_ID_TYPE_ACK = 0x05,
20 HD8122_ID_TYPE_CFG = 0x06,
21 HD8122_ID_TYPE_MON = 0x0A,
22 HD8122_ID_TYPE_AID = 0x0B
23} hd8122_id_type_enum;
24
25typedef enum {
26 HD8122_ID_NAV_POSECEF = 0x01,
27 HD8122_ID_NAV_POSLLH = 0x02,
28 HD8122_ID_NAV_DOP = 0x04,
29 HD8122_ID_NAV_TIME = 0x05,
30 HD8122_ID_NAV_VELECEF = 0x11,
31 HD8122_ID_NAV_VELNED = 0x12,
32 HD8122_ID_NAV_TIMEUTC = 0x21,
33 HD8122_ID_NAV_CLOCK = 0x22,
34 HD8122_ID_NAV_CLOCK2 = 0x23,
35 HD8122_ID_NAV_PVERR = 0x26,
36 HD8122_ID_NAV_SVINFO = 0x30,
37 HD8122_ID_NAV_SVSTATE = 0x32,
38 HD8122_ID_NAV_AUTO = 0xC0,
39 HD8122_ID_NAV_PVT = 0xC1
40} hd8122_id_nav_enum;
41
42typedef enum {
43 HD8122_ID_ACK_NAK = 0x00,
44 HD8122_ID_ACK_ACK = 0x01
45} hd8122_id_ack_enum;
46
47typedef enum {
48 HD8122_ID_CFG_PRT = 0x00,
49 HD8122_ID_CFG_MSG = 0x01,
yq.wang51d17352024-09-23 04:54:46 -070050 HD8122_ID_CFG_COORD = 0x06,
b.liu5f950c52024-06-15 20:13:12 +080051 HD8122_ID_CFG_PPS = 0x07,
52 HD8122_ID_CFG_CFG = 0x09,
53 HD8122_ID_CFG_DOP = 0x0A,
54 HD8122_ID_CFG_ELEV = 0x0B,
55 HD8122_ID_CFG_NAVSAT = 0x0C,
56 HD8122_ID_CFG_HEIGHT = 0x0D,
57 HD8122_ID_CFG_SBAS = 0x0E,
58 HD8122_ID_CFG_SPDHOLD = 0x0F,
59 HD8122_ID_CFG_EPHSAVE = 0x10,
60 HD8122_ID_CFG_NUMSV = 0x11,
61 HD8122_ID_CFG_SURVEY = 0x12,
62 HD8122_ID_CFG_FIXEDLLA = 0x13,
63 HD8122_ID_CFG_FIXEDECEF = 0x14,
64 HD8122_ID_CFG_ANTIJAM = 0x15,
65 HD8122_ID_CFG_BDGEO = 0x16,
66 HD8122_ID_CFG_CARRSMOOTH = 0x17,
67 HD8122_ID_CFG_GEOFENCE = 0x18,
68 HD8122_ID_CFG_SIMPLERST = 0x40,
69 HD8122_ID_CFG_SLEEP = 0x41,
70 HD8122_ID_CFG_PWRCTL = 0x42,
71 HD8122_ID_CFG_PWRCTL2 = 0x44,
72 HD8122_ID_CFG_NMEAVER = 0x43,
73 HD8122_ID_CFG_FWUP = 0x50
74} hd8122_id_cfg_enum;
75
76typedef enum {
77 HD8122_ID_MON_VER = 0x04,
78 HD8122_ID_MON_INFO = 0x05,
79 HD8122_ID_MON_TRKCHAN = 0x08,
80 HD8122_ID_MON_RCVCLK = 0x09,
81 HD8122_ID_MON_CWI = 0x0A,
82} hd8122_id_mon_enum;
83
84typedef enum {
85 HD8122_ID_AID_INI = 0x01,
86 HD8122_ID_AID_POS = 0x10,
87 HD8122_ID_AID_TIME = 0x11,
88 HD8122_ID_AID_PEPH_GPS = 0x32,
89 HD8122_ID_AID_PEPH_BDS = 0x33,
90 HD8122_ID_AID_PALM_GPS = 0x22,
91 HD8122_ID_AID_PALM_BD = 0x23,
92 HD8122_ID_AID_PALM_GLN = 0x24,
93 HD8122_ID_AID_PALM_GAL = 0x25,
94 HD8122_ID_AID_PALM_QZSS = 0x26
95} hd8122_id_aid_enum;
96
97typedef struct {
b.liud0ba7152024-06-19 14:47:21 +080098 bool enable;
99 uint8 gid; // Groud ID
100 uint8 sid; // Sub ID
101 hd8122_id_ack_enum ack_nak;
102} hd8122_msg_id_t;
103
104typedef struct {
b.liu5f950c52024-06-15 20:13:12 +0800105 uint16 head;
106 uint8 id_type;
107 uint8 id;
108 uint16 data_len;
109 uint8 *data;
110} hd8122_pack_info_t;
111
b.liuf9fbfa12024-06-14 15:53:59 +0800112int gnss_8122_dev_open();
113
b.liu978f5432024-07-01 18:04:18 +0800114int gnss_8122_dev_close(int fd);
b.liuf9fbfa12024-06-14 15:53:59 +0800115
116int gnss_8122_open();
117
118int gnss_8122_close();
119
b.liudbc3f4b2024-06-25 18:22:24 +0800120int gnss_8122_fw_dl(int fd, const char *fw_name, const char *dev);
b.liuf9fbfa12024-06-14 15:53:59 +0800121
yq.wang99db6f52024-09-12 01:58:48 -0700122gnss_err_enum gnss_8122_agnss_get_eph(const char *param);
123
124gnss_err_enum gnss_8122_agnss_inject(int fd);
b.liuf9fbfa12024-06-14 15:53:59 +0800125//void gnss_8122_dl_read_cb(const void *data, int data_len);
126
127gnss_err_enum gnss_8122_set(int fd, const char *cmd, void *cmd_rsp, int cmd_rsp_len);
128
b.liu5f950c52024-06-15 20:13:12 +0800129void gnss_8122_set_cb(const void *data, int data_len);
b.liuf9fbfa12024-06-14 15:53:59 +0800130
131#endif /* _GNSS_HD8122_H */
132