AGPS Enable in EC200UCN

we try to implement AGPS , hot start mode to fix the GPS in seconds. but the GPS not getting fix. what was the issue ?

static void ql_gnss_demo_thread(void *param)
{
ql_event_t event;
char *start, *end;
struct nmea_s *nmea = NULL;
unsigned char *recbuff=NULL;
ql_gnss_apflashdatarecv_e datarecv_status=0;
//ql_uart_config_s uart_cfg = {0};
// ql_LvlMode gpio_lvl;
// ql_uart_set_dcbconfig(QL_UART_PORT_1, &uart_cfg);
// ql_pin_set_func(QUEC_PIN_UART1_TXD, QL_UART1_TX_FUNC);
// ql_pin_set_func(QUEC_PIN_UART1_RXD, QL_UART1_RX_FUNC);
// ql_uart_open(QL_UART_PORT_1);
//APP_DEBUG(“\nGNSS THREAD”);
/gnss config/

while (registered != 1)   // registered set from network callback
{
    APP_DEBUG("Waiting for network registration...\n");
    ql_rtos_task_sleep_ms(1000);
}
agps_ret = ql_gnss_agps_cfg(AGPS_GNSS_ENABLE);
if(agps_ret == QL_GNSS_SUCCESS)
{
	APP_DEBUG("AGPS Enable...\n");
}
if(agps_ret == 0)
agps_set = 1;

agps_ret = ql_gnss_agps_param_cfg(1,QL_AGPS_URL_STR,QL_AGPS_VENDORID_STR,QL_AGPS_MODELID_STR,QL_AGPS_PASSWORD_STR);
if(agps_ret == QL_GNSS_SUCCESS)
{
	APP_DEBUG("AGPS URL...\n");
}

if(agps_ret == 0)
agps_set = 1;
APP_DEBUG("AGPS = %d\n",agps_set);

tm.tm_year = 2000+gps_yr;
			tm.tm_mon  = gps_mn;
			tm.tm_mday = gps_dt;
			tm.tm_hour = gps_hh;
			tm.tm_min  = gps_mm;
			tm.tm_sec  = gps_ss;
 ql_rtc_set_time(&tm);

gnss_ret = ql_gnss_switch(GNSS_ENABLE);
if(gnss_ret == QL_GNSS_SUCCESS)
{
	APP_DEBUG("GNSS Boot...\n");
}

while(ql_gnss_state_info_get()==GNSS_FIRMWARE_UPDATE)
{
  //APP_DEBUG("\nGNSS_FIRMWARE_UPDATE");
  ql_rtos_task_sleep_ms(1000);
} 
ql_gnss_callback_register(ql_gnss_notify_cb);
ql_gnss_device_info_request();
ql_gnss_apflash_getpvdata(&g_gps_data);
ql_rtos_timer_create(&gnss_timer,NULL,gnss_timer_callback,NULL);
ql_rtos_timer_start(gnss_timer,10,1);
while(1)
{   	
	//APP_DEBUG("\nql_event_try_wait");	
	if( ql_event_try_wait(&event) != 0 )
    {
		continue;
    }
    if( event.id == QUEC_UART_RX_RECV_DATA_IND || agps_set == 1)
    {
		recbuff=calloc(1,2*QUEC_GPS_RECBUF_LEN_MAX);
        ql_gnss_nmea_get( event.param1,recbuff, event.param2); 
        ql_gnss_apflash_get_recv_status(&datarecv_status);
        if(datarecv_status == APFLASH_DATA_SET_RECV)
        {
			uint32 u32flag=0;
            u32flag=ql_gnss_apflash_data_parse(recbuff, event.param2);

            if(NULL != recbuff)
            {
              free(recbuff);
              recbuff=NULL;
            }
            switch (u32flag)
            {
				case QL_GNSS_APFLASH_NO_ERR:
                    continue;   
                case QL_GNSS_APFLASH_MALLOC_ERR:
                    ql_gnss_apflash_retry_enable(APFLASH_RETRY_ENABLE);
                    ql_gnss_apflash_set_recv_status(APFLASH_DATA_NOT_RECV);
                   continue;
                case QL_GNSS_APFLASH_OVERFLOW_ERR:
                case QL_GNSS_APFLASH_HEAD_ERR:
                case QL_GNSS_APFLASH_RX_ERR:
                    ql_gnss_apflash_retry_enable(APFLASH_RETRY_ENABLE);
                    ql_gnss_apflash_set_recv_status(APFLASH_DATA_NOT_RECV);
                    continue;               
                case QL_GNSS_APFLASH_RX_GOING:
                    continue;
                case QL_GNSS_APFLASH_RX_PASS:
                    ql_gnss_apflash_retry_enable(APFLASH_RETRY_DISABLE);
                    ql_gnss_apflash_set_recv_status(APFLASH_DATA_NOT_RECV);
                    continue;
                default:
					gnss_ret = 0;
                    continue;
            }
        }
        total_bytes += event.param2;
        if (total_bytes > sizeof(buffer)-150) 
        {
           total_bytes = 0;
           if(NULL != recbuff)
           {
              free(recbuff);
              recbuff=NULL;
           }
           continue;
        }  
        memcpy(buffer+total_bytes-event.param2, recbuff, event.param2);
        if(NULL != recbuff)
        {
            free(recbuff);
            recbuff=NULL;
        }
       if(event.param2>0)
       {         
		 end=buffer;
           while(1)
           {  
			   start = memchr(end, '$', total_bytes-(end-buffer));
               if (NULL == start) {
                   total_bytes = 0;
					break;
               }
               end = memchr(start, NMEA_END_CHAR_1, total_bytes-(start-buffer));
               if (NULL==end || NMEA_END_CHAR_2 != *(++end)) {
                  if (buffer != memmove(buffer, start, total_bytes-(start-buffer))) {
                  total_bytes = 0;
                }   
                  total_bytes = total_bytes-(start-buffer);
				  break;
               }
               memset(nmea_buff, 0, sizeof(nmea_buff));
               memcpy(nmea_buff, start, jmin(sizeof(nmea_buff)-1, end-start-1)); 
			   
               nmea = nmea_parse(start, end-start+1, 1);
               if (nmea)
               {
					nmea_value_update(nmea, &g_gps_data);
					free(nmea->data);
					nmea->data = NULL;
					free(nmea);
					nmea = NULL;       
               }
               if(end==buffer+total_bytes)
               {  
				  total_bytes=0;
                  break; 
               }
                end=end+1;
			}
        }
    }
}
ql_rtos_task_sleep_ms(1000);

}

Hi,@murugan
To enable the AGPS function, please refer to the following examples.