blob: da51d20937b5201702f6eb510330df4f21395097 [file] [log] [blame]
/*
* 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"
#define HD8122_PACK_LEN_MIN 8
#define HD8122_PACK_HEAD 0xD9F1
typedef enum {
HD8122_ID_TYPE_NAV = 0x01,
HD8122_ID_TYPE_ACK = 0x05,
HD8122_ID_TYPE_CFG = 0x06,
HD8122_ID_TYPE_MON = 0x0A,
HD8122_ID_TYPE_AID = 0x0B
} hd8122_id_type_enum;
typedef enum {
HD8122_ID_NAV_POSECEF = 0x01,
HD8122_ID_NAV_POSLLH = 0x02,
HD8122_ID_NAV_DOP = 0x04,
HD8122_ID_NAV_TIME = 0x05,
HD8122_ID_NAV_VELECEF = 0x11,
HD8122_ID_NAV_VELNED = 0x12,
HD8122_ID_NAV_TIMEUTC = 0x21,
HD8122_ID_NAV_CLOCK = 0x22,
HD8122_ID_NAV_CLOCK2 = 0x23,
HD8122_ID_NAV_PVERR = 0x26,
HD8122_ID_NAV_SVINFO = 0x30,
HD8122_ID_NAV_SVSTATE = 0x32,
HD8122_ID_NAV_AUTO = 0xC0,
HD8122_ID_NAV_PVT = 0xC1
} hd8122_id_nav_enum;
typedef enum {
HD8122_ID_ACK_NAK = 0x00,
HD8122_ID_ACK_ACK = 0x01
} hd8122_id_ack_enum;
typedef enum {
HD8122_ID_CFG_PRT = 0x00,
HD8122_ID_CFG_MSG = 0x01,
HD8122_ID_CFG_COORD = 0x06,
HD8122_ID_CFG_PPS = 0x07,
HD8122_ID_CFG_CFG = 0x09,
HD8122_ID_CFG_DOP = 0x0A,
HD8122_ID_CFG_ELEV = 0x0B,
HD8122_ID_CFG_NAVSAT = 0x0C,
HD8122_ID_CFG_HEIGHT = 0x0D,
HD8122_ID_CFG_SBAS = 0x0E,
HD8122_ID_CFG_SPDHOLD = 0x0F,
HD8122_ID_CFG_EPHSAVE = 0x10,
HD8122_ID_CFG_NUMSV = 0x11,
HD8122_ID_CFG_SURVEY = 0x12,
HD8122_ID_CFG_FIXEDLLA = 0x13,
HD8122_ID_CFG_FIXEDECEF = 0x14,
HD8122_ID_CFG_ANTIJAM = 0x15,
HD8122_ID_CFG_BDGEO = 0x16,
HD8122_ID_CFG_CARRSMOOTH = 0x17,
HD8122_ID_CFG_GEOFENCE = 0x18,
HD8122_ID_CFG_SIMPLERST = 0x40,
HD8122_ID_CFG_SLEEP = 0x41,
HD8122_ID_CFG_PWRCTL = 0x42,
HD8122_ID_CFG_PWRCTL2 = 0x44,
HD8122_ID_CFG_NMEAVER = 0x43,
HD8122_ID_CFG_FWUP = 0x50
} hd8122_id_cfg_enum;
typedef enum {
HD8122_ID_MON_VER = 0x04,
HD8122_ID_MON_INFO = 0x05,
HD8122_ID_MON_TRKCHAN = 0x08,
HD8122_ID_MON_RCVCLK = 0x09,
HD8122_ID_MON_CWI = 0x0A,
} hd8122_id_mon_enum;
typedef enum {
HD8122_ID_AID_INI = 0x01,
HD8122_ID_AID_POS = 0x10,
HD8122_ID_AID_TIME = 0x11,
HD8122_ID_AID_PEPH_GPS = 0x32,
HD8122_ID_AID_PEPH_BDS = 0x33,
HD8122_ID_AID_PALM_GPS = 0x22,
HD8122_ID_AID_PALM_BD = 0x23,
HD8122_ID_AID_PALM_GLN = 0x24,
HD8122_ID_AID_PALM_GAL = 0x25,
HD8122_ID_AID_PALM_QZSS = 0x26
} hd8122_id_aid_enum;
typedef enum {
HD8122_EPHSAVE_STATUS_DISABLE = 0x0,
HD8122_EPHSAVE_STATUS_ENABLE = 0x1
} hd8122_ephsave_status_enum;
typedef struct {
bool enable;
uint8 gid; // Groud ID
uint8 sid; // Sub ID
hd8122_id_ack_enum ack_nak;
} hd8122_msg_id_t;
typedef struct {
uint16 head;
uint8 id_type;
uint8 id;
uint16 data_len;
uint8 *data;
} hd8122_pack_info_t;
int gnss_8122_dev_open();
int gnss_8122_dev_close(int fd);
int gnss_8122_open();
int gnss_8122_close();
int gnss_8122_init_set(int fd);
int gnss_8122_fw_dl(int fd, const char *fw_name, const char *dev);
gnss_err_enum gnss_8122_agnss_get_eph(const char *param);
gnss_err_enum gnss_8122_agnss_inject(int fd);
//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 */