nRF Cloud A-GPS MQTT

I'm using the MQTT multi service sample to get A-GPS data using MQTT. I want to compare the energyconsumption with REST. I request A-GPS data using the function "nrf_cloud_agps_request_all()". I use the function below to check what A-GPS data is available to the modem. Before I do the request it prints: "ephe 0x000000, alm 0x0000000, flags 0x00" and then i print again when the LTE-connection goes into RRC idle mode and it prints this: "ephe 0xfffffffe, alm 0xfffffffe, flags 0x3f". So this means that the A-GPS data is received, processed and ready for yse right? The issue is I want to shut down the LTE-connection as soon as I can since I have a very energy sensitive application. Isn't there some way to know exactly when the A-GPS data is received so I can shut down the LTE after? I have tried to detect this with the various cloud events like "NRF_CLOUD_EVT_RX_DATA_LOCATION" and "NRF_CLOUD_EVT_RX_DATA_GENERAL", but it seems like they are never triggered. Do you guys have a solution for me? Thanks in advance.

struct nrf_modem_gnss_agps_data_frame last_agps;
    nrf_cloud_agps_processed(&last_agps);
    LOG_INF("ephe 0x%08x, alm 0x%08x, flags 0x%02x",
            last_agps.sv_mask_ephe,
            last_agps.sv_mask_alm,
            last_agps.data_flags);
Parents
  • Hi,

    Unfortunately, it doesn't look like we have a callback for when the A-GNSS request has been processed.

    However, you can use nrf_cloud_agnss_request_in_progress() to see if you are waiting for the response to a request.

    It will return true while you are still waiting for the response, and false once the response has been received, but before the response has been written to the modem. However, the LTE link should no longer be necessary when nrf_cloud_agnss_request_in_progress() returns false.

    Best regards,

    Didrik

Reply
  • Hi,

    Unfortunately, it doesn't look like we have a callback for when the A-GNSS request has been processed.

    However, you can use nrf_cloud_agnss_request_in_progress() to see if you are waiting for the response to a request.

    It will return true while you are still waiting for the response, and false once the response has been received, but before the response has been written to the modem. However, the LTE link should no longer be necessary when nrf_cloud_agnss_request_in_progress() returns false.

    Best regards,

    Didrik

Children
Related