Files

286 lines
7.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*================================================================
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
Quectel Wireless Solutions Proprietary and Confidential.
=================================================================*/
#ifndef _QL_GNSS_H_
#define _QL_GNSS_H_
#ifdef __cplusplus
extern "C" {
#endif
#define QL_GSV_MAX_SATS (32)
#define QL_GNSS_OK 0
#define QL_GNSS_ERR -1
typedef enum
{
AGPS_GNSS_DISABLE,
AGPS_GNSS_ENABLE
}ql_AGPSGnssSW;
typedef enum
{
APFLASH_GNSS_DISABLE,
APFLASH_GNSS_ENABLE
}ql_APFLASHGnssSW;
typedef enum{
QGPS_RESET_COLD,
QGPS_RESET_HOT,
QGPS_RESET_WARM
}ql_GPS_RESET_t;
typedef struct ql_gnss_location_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[QL_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;
}ql_gnss_location_t;
typedef struct{
//配置号,1~7
unsigned char profile_inx;
//agps服务器地址
char agps_url[128];
//经销商账号
char agpsvendorID[50];
//用户账号
char agpsmodelID[25];
//密码
char agpspassWord[50];
}quec_agps_param_t;
typedef void (*gnss_callback)(char *data, int len);
/***********************************************************************
*
* Name: ql_gnss_open
*
* Description: 打开gnss
*
* Parameters: cb:gnss nmea回调函数
*
* Returns: 0:打开成功
*
* Notes:
*
***********************************************************************/
int ql_gnss_open(gnss_callback cb);
/***********************************************************************
*
* Name: ql_gnss_close
*
* Description: 关闭gnss
*
* Parameters: none
*
* Returns: 0:关闭成功
* other: faile
* Notes:
*
***********************************************************************/
int ql_gnss_close(void);
/***********************************************************************
*
* Name: ql_gnss_cfgsys_set
*
* Description: 设置gnss系统,在调用ql_gnss_open之前设置生效
*
* Parameters: sys_type:
* 0 GPS
* 1 GPS + BeiDou
* 3 GPS + GLONASS + Galileo
* 4 GPS + GLONASS
* 5 GPS + BeiDou + Galileo
* 6 GPS + Galileo
* 7 BeiDou
* Returns: 0 :设置成功
* 非0:设置失败
* Notes:
*
***********************************************************************/
int ql_gnss_cfgsys_set(int sys_type);
/***********************************************************************
*
* Name: ql_gnss_cfgmsg_set
*
* Description: 设置gnss吐出的nmea语句类型,在调用ql_gnss_open之前设置生效,在ql_gnss_cfgsys_set之后设置,原因:系统切换,nmea语句恢复默认值
*
* Parameters: nmea_type
* 0 禁止输出NMEA语句
* 1 GGA
* 2 RMC
* 4 GSV
* 8 GSA
* 16 VTG
* 32 GLL
* 63 输出以上所有类型的语句
* Returns: 0 :设置成功
* 非0:设置失败
* Notes:
*
***********************************************************************/
int ql_gnss_cfgmsg_set(int nmea_type);
/***********************************************************************
*
* Name: ql_gnss_agps_cfg
*
* Description: 设置agps功能,在调用ql_gnss_open之前设置生效
*
* Parameters: gnssagpsflag
* AGPS_GNSS_DISABLE,
* AGPS_GNSS_ENABLE
* Returns: 0 :设置成功
* 非0:设置失败
* Notes:
*
***********************************************************************/
int ql_gnss_agps_cfg(ql_AGPSGnssSW gnssagpsflag,char agps_type);
/***********************************************************************
*
* Name: ql_gnss_apflash_cfg
*
* Description: 设置apflash功能,在调用ql_gnss_open之前设置生效
*
* Parameters: gnssapflashflag
* APFLASH_GNSS_DISABLE,
* APFLASH_GNSS_ENABLE
* Returns: 0 :设置成功
* 非0:设置失败
* Notes:
*
***********************************************************************/
int ql_gnss_apflash_cfg(ql_APFLASHGnssSW gnssapflashflag);
int ql_gnss_reset_type_set(ql_GPS_RESET_t type);
int ql_gnss_get_location(ql_gnss_location_t **lolcation);
/***********************************************************************
*
* Name: ql_gnss_reset_type_set
*
* Description: 设置gnss芯片冷热温启动,在gnss定位成功后设置生效
*
* Parameters: type
* QGPS_RESET_COLD,
* QGPS_RESET_HOT,
* QGPS_RESET_WARM
* Returns: 0 :设置成功
* 非0:设置失败
* Notes:
*
***********************************************************************/
int ql_gnss_reset_type_set(ql_GPS_RESET_t type);
void ql_get_agps_sate_num( void* cb);
int ql_set_agps_file(void);
int ql_send_agps_to_gps(char *data,int len);
int ql_set_gnss_nmea_mode(char mode);
void ql_monitor_param_print(void);
int ql_gnss_aidpos_inject(ql_gnss_location_t *aidpos);
int ql_hx_bckp_set(int value);
/***********************************************************************
*
* Name: ql_gnss_agps_param_cfg
*
* Description: 用于agps服务器接入参数的配置
*
* Parameters: agps_param
* 见quec_agps_param_t类型定义
*
* Returns: 0:set success
* 1:fail
* Notes:1.仅在GNSS厂商更新AGPS服务器地址时需要调用
* 2.调用时需要在GNSS打开前调用
*
***********************************************************************/
int ql_gnss_agps_param_cfg(quec_agps_param_t *agps_param);
/***********************************************************************
*
* Name: ql_gnss_ntp_url_cfg
*
* Description: 用于配置ntp服务器的地址
*
* Parameters: ntp_url
* ntp服务器的url地址
*
* Returns: 0:set success
* 1:fail
* Notes:1.仅在NTP服务器不可用时需要调用
* 2.调用时需要在GNSS打开前调用
*
***********************************************************************/
int ql_gnss_ntp_url_cfg(const char * ntp_url);
/***********************************************************************
*
* Name: ql_gnss_reg_user_cb
*
* Description: 获取gnss状态回调
*
* Parameters: cb 回调函数
*
* Returns:
*
***********************************************************************/
void ql_gnss_reg_user_cb(void* cb);
#ifdef __cplusplus
} /*"C" */
#endif
#endif /* _QL_GNSS_H_ */