286 lines
7.2 KiB
C
286 lines
7.2 KiB
C
/*================================================================
|
||
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_ */
|
||
|
||
|