Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
/*============================================================================================
|
||||
Copyright(c) 2018 Quectel Wierless Solution,Co.,Ltd. All Rights Reserved.
|
||||
Quectel Wireless Solution Proprietary and Confidential.
|
||||
============================================================================*/
|
||||
#ifndef __QUEC_GPS_H__
|
||||
#define __QUEC_GPS_H__
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "quec_nmea_parse.h"
|
||||
#define HX_GSV_MAX_SATS 32
|
||||
|
||||
#define QUEC_GPS_CLOSE 0
|
||||
#define QUEC_GPS_OPEN 1
|
||||
#define QUEC_GPS_OUTPT_NMEA 2
|
||||
|
||||
#define QUEC_GPS_OPEN_EVENT (1<<0)
|
||||
#define QUEC_GPS_CLOSE_EVENT (1<<1)
|
||||
#define QUEC_GPS_NMEA_PARSE_EVENT (1<<2)
|
||||
#define QUEC_AGPS_DATA_REQ_EVENT (1<<3)
|
||||
#define QUEC_APFLSH_REQ_EVENT (1<<4)
|
||||
#define QUEC_GPS_APFLASH_EVENT (1<<5)
|
||||
#define QUEC_GPS_DOWNLOAD_FIRM (1<<6)
|
||||
#define QUEC_GPS_RESTART (1<<7)
|
||||
|
||||
#define QUEC_GPS_EVENT_MASK (QUEC_GPS_OPEN_EVENT | QUEC_GPS_CLOSE_EVENT | QUEC_GPS_NMEA_PARSE_EVENT \
|
||||
|QUEC_AGPS_DATA_REQ_EVENT |QUEC_APFLSH_REQ_EVENT| QUEC_GPS_APFLASH_EVENT | QUEC_GPS_RESTART)
|
||||
|
||||
#define QUEC_GPS_INIT_STATE 0
|
||||
#define QUEC_NMEA_PASRE_STATE (1<<0)
|
||||
#define QUEC_GPS_RESET_STATE (1<<1)
|
||||
#define QUEC_APFLASH_REQED (1<<2) /*开机第一次请求apflash数据已经完成*/
|
||||
|
||||
#define QUEC_POWER_ON 1
|
||||
#define QUEC_POWER_OFF 0
|
||||
|
||||
#define NMEA_CLOSE 0
|
||||
#define GGA_EN (1<<0)
|
||||
#define RMC_EN (1<<1)
|
||||
#define GSV_EN (1<<2)
|
||||
#define GSA_EN (1<<3)
|
||||
#define VTG_EN (1<<4)
|
||||
#define GLL_EN (1<<5)
|
||||
|
||||
enum {
|
||||
GPS_SYS =0,
|
||||
GPS_BEIDOU_SYS,
|
||||
GPS_BEIDOU_GALILEO_GLONASS_SYS,
|
||||
GPS_GLONASS_GALILEO_SYS = 3,
|
||||
GPS_GLONASS_SYS,
|
||||
GPS_BEIDOU_GALILEO_SYS,
|
||||
GPS_GALILEO_SYS,
|
||||
BEIDOU_SYS,
|
||||
GPS_BEIDOU_GLONASS_SYS,
|
||||
};//CC1161新增2,8两个组合
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GNSS_SYS=0,
|
||||
BEIDOU_ONLY,
|
||||
}hx_gnss_sys_t;
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
QUEC_GPS_NO_ERROR = 0,
|
||||
QUEC_GPS_NOT_OPEN_ERROR,
|
||||
QUEC_GPS_ALREADY_CLOSED_ERROR,
|
||||
QUEC_GPS_NOT_EXIST_ERROR,
|
||||
QUEC_GPS_RESP_MSG_ERROR,
|
||||
QUEC_GPS_CMD_MSG_ERROR,
|
||||
QUEC_GPS_ERROR,
|
||||
|
||||
};
|
||||
|
||||
#define HX_GPS_MODULE 0xBDE33982 /*和芯星通制造商*/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
GPS_UNKNOW,
|
||||
GPS_OK_CMD=0x01,
|
||||
GPS_FAIL_CMD,
|
||||
GPS_AIDINFO_RESP ,
|
||||
GPS_CFGGEOID_RESP,
|
||||
GPS_PDTINFO_RESP
|
||||
}quec_gnss_cmd_resp;
|
||||
/**************************GNSS CMD***************************/
|
||||
|
||||
typedef enum
|
||||
{
|
||||
QUEC_GNSS_UNKNOW_TYPE,
|
||||
QUEC_GNSS_BAUD_SET,
|
||||
QUEC_GNSS_PDTINFO_CMD,
|
||||
QUEC_GNSS_NMEA_TYPE,
|
||||
QUEC_GNSS_CFGSYS,
|
||||
QUEC_GNSS_HOT_RESET,
|
||||
QUEC_GNSS_WARM_RESET,
|
||||
QUEC_GNSS_COLD_RESET,
|
||||
QUEC_GNSS_AGPS_AIDINFO_REQ,
|
||||
QUEC_GNSS_CFG_GEOID_REQ,
|
||||
QUEC_GNSS_CFG_GEOID_SET,
|
||||
QUEC_GNSS_AIDPOS_SET,
|
||||
QUEC_GNSS_AIDTIME_SET,
|
||||
QUEC_GNSS_1PPS_CONFIG,
|
||||
QUEC_GNSS_MAX_CMD,
|
||||
}quec_gnss_cmd;
|
||||
|
||||
enum
|
||||
{
|
||||
SV_NEED_UPDATE,
|
||||
SV_UPDATING,
|
||||
SV_UPDATED,
|
||||
};
|
||||
|
||||
typedef struct hx_locate_struct {
|
||||
|
||||
/*是否有效定位*/
|
||||
unsigned char valid;
|
||||
/*经度*/
|
||||
double longitude;
|
||||
/*经度E(东经)或W(西经)*/
|
||||
unsigned char longitude_cardinal;
|
||||
/*纬度*/
|
||||
double latitude;
|
||||
/*纬度N(北纬)或S(南纬)*/
|
||||
unsigned char latitude_cardinal;
|
||||
/*hdop精度*/
|
||||
float hdop;
|
||||
/*phop精度*/
|
||||
float pdop;
|
||||
/*航向 0-360*/
|
||||
float heading;
|
||||
/*速度 km/h*/
|
||||
float gps_speed;
|
||||
/*信号强度,max=5, data from avg_snr*/
|
||||
unsigned char gps_signal;
|
||||
/*最大信号?? db*/
|
||||
unsigned int max_cnr;
|
||||
unsigned int max_cnr2;
|
||||
/*最小信号?? db*/
|
||||
unsigned int min_cnr;
|
||||
/*平均信号?? db*/
|
||||
unsigned int avg_cnr;
|
||||
/*信号值数??*/
|
||||
unsigned int cnrs[HX_GSV_MAX_SATS];
|
||||
unsigned int cnrs_index;
|
||||
/*定位卫星数量*/
|
||||
unsigned int satellites_num;
|
||||
/*海拔高度*/
|
||||
float altitude;
|
||||
/*FWVER*/
|
||||
char fwver[32];
|
||||
struct tm time;
|
||||
unsigned char quality;
|
||||
unsigned char navmode;
|
||||
/*定位模式*/
|
||||
unsigned char fix_mode;
|
||||
/*VTG:地面速率 单位:节*/
|
||||
double sog;
|
||||
/*VTG:地面速率 单位:km/h*/
|
||||
double kph;
|
||||
/*VTG:地面航向*/
|
||||
double cogt;
|
||||
/*一组GSV更新状态*/
|
||||
unsigned char gsv_status;
|
||||
}hx_locationg_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
char gps_sate_num;
|
||||
char gps_sate_vaild_num;
|
||||
char bds_sate_num;
|
||||
char bds_sate_vaild_num;
|
||||
char gal_sate_num;
|
||||
char gal_sate_vaild_num;
|
||||
char glo_sate_num;
|
||||
char glo_sate_vaild_num;
|
||||
|
||||
}quec_gnss_sate_num_t;
|
||||
|
||||
typedef struct quec_gnps_msg
|
||||
{
|
||||
unsigned short cmd_id;
|
||||
int len;
|
||||
char *data;
|
||||
}quec_gps_msg_t;
|
||||
typedef void (*nmea_str_put) (struct tm *time ,char *nmea ,int length);
|
||||
typedef void (*location_update) (hx_locationg_t *gps_data);
|
||||
typedef void (*gps_open_success) (void); /*打开gps成功回调*/
|
||||
typedef void (*gnss_ephemeris_info)(quec_gnss_sate_num_t * gnss_sate_num);
|
||||
typedef void (*gps_packet_put) (char *packet ,int length);
|
||||
|
||||
|
||||
typedef struct {
|
||||
int (*q_gps_open) (void); /*打开gps模块*/
|
||||
int (*q_gps_close) (void); /*关闭gps模块*/
|
||||
int (*q_gps_reset) (int type); /*重启gps模块*/
|
||||
void (*q_reg_nmea_str_cb) (nmea_str_put cb);
|
||||
void (*q_reg_location_update_cb) (location_update cb);
|
||||
void (*q_reg_open_gps_success_cb) (gps_open_success cb);
|
||||
void (*q_reg_agps_sate_num_cb) (gnss_ephemeris_info cb);
|
||||
void (*q_reg_nmea_packet_cb) (gps_packet_put cb);
|
||||
}QUEC_GPS_OPS;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
gps_open_success open_gps_success_cb;
|
||||
nmea_str_put nmea_str_cb; /*nmea 解析回调,用于上层去获取单条nmea语句*/
|
||||
location_update loaction_update_cb; /*位置更新回调,用于将解析后的位置信息更新到上层*/
|
||||
gnss_ephemeris_info gnss_ephemeris_info_cb; /*星历检查是否有效回调*/
|
||||
gps_packet_put nmea_packets_cb;
|
||||
}QUEC_NMEA_CB;
|
||||
|
||||
typedef struct quec_gps_dev
|
||||
{
|
||||
unsigned int gps_manufacturer; /*gps模组制造商*/
|
||||
char power_state; /*GPS上电状态*/
|
||||
int worke_state; /*GPS工作状态*/
|
||||
void *gps_event_flag_ref;
|
||||
void *gps_task_ref;
|
||||
void *gps_keep_alive_timer;
|
||||
QUEC_GPS_OPS *ops;
|
||||
QUEC_NMEA_CB *nmea_cb;
|
||||
}QUEC_GPS_DEV_T;
|
||||
|
||||
typedef struct quec_gnss_quick_start
|
||||
{
|
||||
char reset_flag;
|
||||
hx_locationg_t data;
|
||||
}quec_gnss_quick_start_t;
|
||||
|
||||
|
||||
QUEC_GPS_DEV_T *quec_get_gps_dev(void);
|
||||
int quec_gps_open(void);
|
||||
int quec_gps_close(void);
|
||||
hx_locationg_t * hx_location_data_get(void);
|
||||
int quec_gnss_cmd_send(quec_gps_msg_t *rcv);
|
||||
int quec_gnss_resp_process(quec_gps_msg_t *rcv);
|
||||
void quec_apflash_req_flag_set(void);
|
||||
void quec_gps_init(void);
|
||||
int quec_hx_gnss_sys_set(int sys_type);
|
||||
int quec_hx_gnss_nmea_set(char value);
|
||||
void *quec_get_gnss_sate_num(void);
|
||||
void quec_agps_req_flag_set(void);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user