Files
banban/ql-kernel/threadx/gnss/ql_gnss.c

162 lines
4.2 KiB
C

/*==========================================================================================================
Copyright (c) 2021, Quectel Wireless Solutions Co., Ltd. All rights reserved.
Quectel Wireless Solutions Proprietary and Confidential.
===========================================================================================================*/
#include "gps_app.h"
#include "ql_gnss.h"
#include "stdio.h"
#include "string.h"
extern gnss_callback ql_gnss_nmea_data_cb;
int ql_gnss_agps_param_cfg(quec_agps_param_t *agps_param)
{
return quec_agps_param_cfg((quec_agps_cfg_t *)agps_param);
}
int ql_gnss_ntp_url_cfg(const char * ntp_url)
{
quec_gps_handle *quec_gps_config_param;
quec_gps_config_param = quec_gnss_config_para_get();
if(ntp_url==NULL || strlen(ntp_url)>sizeof(quec_gps_config_param->ntp_url))
{
return QL_GNSS_ERR;
}
snprintf(quec_gps_config_param->ntp_url, sizeof(quec_gps_config_param->ntp_url), "%s", ntp_url);
return QL_GNSS_OK;
}
int ql_gnss_open(gnss_callback cb)
{
int ret = QL_GNSS_OK;
ql_gnss_nmea_data_cb = cb;
quec_gnss_open();
return ret;
}
int ql_gnss_close(void)
{
int ret = QL_GNSS_OK;
quec_gnss_close();
ql_gnss_nmea_data_cb = NULL;
return ret;
}
int ql_gnss_cfgsys_set(int sys_type)
{
if((sys_type<0)||(sys_type>8))
return QL_GNSS_ERR;
quec_gps_handle *quec_gps_config_param;
quec_gps_config_param = quec_gnss_config_para_get();
quec_gps_config_param->nmea_handle_cfg.gnss_sys_type = sys_type;
quec_gps_config_param->nmea_handle_cfg.mdflag |= GNSS_SYSCONFGE_ENABLE;
return QL_GNSS_OK;
}
int ql_gnss_cfgmsg_set(int nmea_type)
{
nmea_type&=0x7f;
quec_gps_handle *quec_gps_config_param;
quec_gps_config_param = quec_gnss_config_para_get();
quec_gps_config_param->nmea_handle_cfg.gps_nmea_type = nmea_type;
quec_gps_config_param->nmea_handle_cfg.mdflag |= GNSS_NMEATYPE_ENABLE;
return QL_GNSS_OK;
}
int ql_hx_bckp_set(int value)
{
int read;
quec_hx_bckp_set(value);
read = quec_hx_bckp_get();
if(value == read){
return 0;
}
return 1;
}
extern void RTI_LOG(const char* fmt, ...);
void ql_monitor_param_print(void)
{
int i = 0;
quec_gnss_monitor_struct_t* quec_monitor_param = quec_get_monitor_param();
RTI_LOG("monitor_param:agps_req_cnt: %d, apflash_req_cnt: %d, write_flash_cnt: %d",\
quec_monitor_param->monitor_agps_req_cnt,\
quec_monitor_param->monitor_apflash_req_cnt,\
quec_monitor_param->monitor_write_flash_cnt);
for(i=0;i<24;i++)
{
RTI_LOG("monitor_param:agpstime[%d]=%d",i,quec_monitor_param->agps_req_time[i]);
}
}
int ql_gnss_agps_cfg(ql_AGPSGnssSW gnssagpsflag , char agps_type)
{
if((gnssagpsflag!=AGPS_GNSS_DISABLE)&&(gnssagpsflag!=AGPS_GNSS_ENABLE))
return QL_GNSS_ERR;
quec_gps_handle *quec_gps_config_param;
quec_gps_config_param = quec_gnss_config_para_get();
quec_gps_config_param->agps_cfg.agps_en = gnssagpsflag;
quec_gps_config_param->agps_cfg.agps_type = agps_type;
return QL_GNSS_OK;
}
int ql_gnss_apflash_cfg(ql_APFLASHGnssSW gnssapflashflag)
{
if((gnssapflashflag!=APFLASH_GNSS_DISABLE)&&(gnssapflashflag!=APFLASH_GNSS_ENABLE))
return QL_GNSS_ERR;
quec_gps_handle *quec_gps_config_param;
quec_gps_config_param = quec_gnss_config_para_get();
quec_gps_config_param->apflash = gnssapflashflag;
return 0;
}
int ql_gnss_reset_type_set(ql_GPS_RESET_t type)
{
return quec_gnss_reset((int)type);
}
int ql_gnss_get_location(ql_gnss_location_t **lolcation)
{
int ret = QL_GNSS_ERR;
ql_gnss_location_t * ql_location = quec_get_location_para();
*lolcation = ql_location;
ret = QL_GNSS_OK;
return ret;
}
void ql_get_agps_sate_num( void* cb)
{
quec_get_agps_sate_num(cb);
}
int ql_set_agps_file(void)
{
return quec_set_agps_file();
}
int ql_send_agps_to_gps(char *data,int len)
{
return quec_send_agps_to_gps(data,len);
}
int ql_set_gnss_nmea_mode(char mode)
{
return quec_set_gnss_nmea_mode((nmea_mode_t)mode);
}
int ql_gnss_aidpos_inject(ql_gnss_location_t *aidpos)
{
return quec_gnss_aidpos_inject((quec_gnss_nmea_data_t *)aidpos);
}
void ql_gnss_reg_user_cb(void* cb)
{
quec_gnss_reg_user_cb(cb);
}