nrf9160 - Fails GPS if AGPS/PGPS connection/download takes too long

Hi Support,

I have the following:

1. Custom hardware - Unable to perform modem traces.

2. nrf SDK - 1.9.0

3. modem firmware: 1.3.4

4. RTOS - Zephyr

I have noticed that sometimes when the nrfCould connection/download for AGPS/PGPS data takes a little while longer, the GPS FIX fails, obviously because we cannot use LTE and GPS receiver at the same time.

Is there a clean way to manage this process.

My application is based on the "gnss" example found in C:\ncs\v1.9.0\nrf\samples\nrf9160\gnss.

The sequence of calls in main is:

We call sample_init(), which kicks off the nrfCould AGPS/PGPS connection, then call gnss_init_start(), and sometimes I see this error in the logs:

[00:01:04.037,322] <dbg> nrf_cloud_pgps.npgps_find_first_free: first_free idx:41 from:41
[00:01:04.048,034] <dbg> nrf_cloud_pgps.validate_stored_predictions: no free blocks
[00:01:04.058,288] <inf> nrf_cloud_pgps: num blocks:42, size:2048, first_free:-1
[00:01:04.068,908] <inf> nrf_cloud_pgps: map:111111111111111111111111111111111111111111
[00:01:04.080,108] <dbg> nrf_cloud_pgps.nrf_cloud_pgps_init: num_valid:42, count:42
[00:01:04.090,362] <inf> nrf_cloud_pgps: Checking if P-GPS data is expired...
[00:01:04.100,646] <wrn> date_time: Valid time not currently available
[00:01:04.110,534] <inf> nrf_cloud_pgps: Unknown current time
[00:01:04.119,384] <inf> nrf_cloud_pgps: Looking for prediction for: GPS sec:0, day:0, time of day:42, week:0, day of week:0, time of week:42, toe:2
[00:01:04.136,199] <inf> nrf_cloud_pgps: First stored prediction: GPS sec:1372428000, day:15884, time of day:50400, week:2269, day of week:1, time of week:136800, toe:8550
[00:01:04.155,181] <inf> nrf_cloud_pgps: current offset into prediction set, sec:-1372428000
[00:01:04.166,870] <wrn> nrf_cloud_pgps: cannot find prediction; real time not known
[00:01:04.178,039] <inf> nrf_cloud_pgps: P-GPS data is up to date.
[00:01:04.187,316] <wrn> assistance: PGPS_EVT_READY
[00:01:04.195,526] <inf> assistance: pgps init
[00:01:04.203,002] <wrn> gnss: Waiting for GPS LOCK

[00:01:04.217,712] <err> gnss: Failed to set GNSS NMEA mask
[00:01:04.227,722] <wrn> gnss: Failed to set GNSS use case
[00:01:04.237,731] <err> gnss: Failed to set GNSS power saving mode
[00:01:04.247,375] <err> gnss: Failed to initialize and start GNSS
[00:01:04.271,636] <err> gnss: nrf_modem_gnss_stop: -1
[00:01:04.387,481] <inf> gnss: No Lock achieved before sleep
[00:01:04.396,209] <wrn> date_time: Valid time not currently available
[00:01:04.406,158] <inf> gnss: Failed to get date_time_now: -61
[00:01:04.415,252] <inf> gnss: Date: 1970-01-01 Time: 00:00:00

int main(void)
{
    uint8_t cnt = 0;
    struct nrf_modem_gnss_nmea_data_frame *nmea_data;

    LOG_INF("Starting GNSS sample");

    if (modem_init() != 0) {
        LOG_ERR("Failed to initialize modem");
        return -1;
    }

    if (sample_init() != 0) {
        LOG_ERR("Failed to initialize sample");
        return -1;
    }

    if (gnss_init_and_start() != 0) {
        LOG_ERR("Failed to initialize and start GNSS");
        return -1;
    }

Any thoughts on how to resolve this?

Parents Reply Children
No Data
Related