This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Using GPS with SUPL sample in Asset Tracker application

I'm assuming AGPS in the Asset Tracker was designed to use nrf cloud.  I don't know if that will be suitable for production deployment at the moment.  The GPS with SUPL sample seems to work pretty well, so I'm trying to use that code in the Asset Tracker application.  In the Asset Tracker gps_handler(), it takes a struct gps_event, which is from \nrf\include\drivers\gps.h:

struct gps_event {
    enum gps_event_type type;
    union {
        struct gps_pvt pvt;
        struct gps_nmea nmea;
        struct gps_agps_request agps_request;
        enum gps_error error;
    };
};

In the GPS sample, in order for supl_session() and inject_agps_type() to work, you use them with nrf_gnss_data_frame_t and nrf_gnss_agps_data_type_t data respectively, which are from \nrfxlib\bsdlib\include\nrf_socket.h:

/**@brief AGPS notification data frame used by the GPS module to let the application know it needs new APGS data. */
typedef struct
{
    uint32_t sv_mask_ephe; /**< Bit mask indicating the satellite PRNs for which the assistance GPS ephemeris data is needed. */
    uint32_t sv_mask_alm;  /**< Bit mask indicating the satellite PRNs for which the assistance GPS almanac data is needed. */
    uint32_t data_flags;   /**< Indicating other AGPS data models is needed by the GNSS module */
} nrf_gnss_agps_data_frame_t;

#define NRF_GNSS_PVT_DATA_ID  1
#define NRF_GNSS_NMEA_DATA_ID 2
#define NRF_GNSS_AGPS_DATA_ID 3

/**@brief Wrapper struct that used for all data frames read from the GNSS module */
typedef struct
{
    uint8_t data_id;
    union
    {
        nrf_gnss_pvt_data_frame_t  pvt;  /**< PVT (Position, Velocity, and Time) data notification frame */
        nrf_gnss_nmea_data_frame_t nmea; /**< NMEA data notification frame */
        nrf_gnss_agps_data_frame_t agps; /**< AGPS data request notification */
    };
} nrf_gnss_data_frame_t;

Both ways have a lot in common, but they're not compatible.  Is the Asset Tracker taking the GNSS data and repackaging it differently than the GPS sample?  Maybe I'm missing something.  Anyway, is there a way to make this work?  I want most of the framework of the Asset Tracker, but using the GPS with SUPL code.

Parents Reply Children
  • Great! Please report back whether it works for you or not.

    Best regards,
    Carl Richard

  • I looked through the AGPS sample.  I don't see any conditionals to omit the nrf cloud calls from the build when using SUPL.  Here's what I get after making those changes to prj.conf, along with these changes:

    CONFIG_NRF9160_GPS_SET_MAGPIO=n
    CONFIG_NRF9160_GPS_SET_COEX0=y
    CONFIG_NRF9160_GPS_COEX0_STRING="AT%XCOEX0=1,1,1565,1586"

    *** Booting Zephyr OS build v2.4.0-ncs1  ***
    I: A-GPS sample has started
    I: Connecting to LTE network. This may take minutes.
    I: PSM mode requested
    +CEREG: 2,"150D","00526D02",7,0,0,"11100000","11100000"
    +CSCON: 1
    +CEREG: 1,"150D","00526D02",7,,,"00000010","00011111"
    I: Connected to LTE network
    D: COEX0 set: AT%XCOEX0=1,1,1565,1586
    D: GPS socket created, fd: 1232491587
    I: CLOUD_EVT_CONNECTING
    I: CLOUD_EVT_CONNECTING
    +CSCON: 0
    

  • Hi!

    When using SUPL the GPS backend handles the calls. Nothing changes in the actual sample. If you are talking about the "gps_process_agps_data" function that is called on a CLOUD_EVT_DATA_RECEIVED event then you will see that it's implemented to do nothing if not using nRF Cloud AGPS.

    As the documentation states the sample communicates with the nRF Cloud for uploading data and controlling the device.  I did not try with your config, but got it working with the configs I referenced earlier.

    Did you try with the asset tracker?

    Best regards,
    Carl Richard

  • Can it show any debug info?  I don't see any activity.  Does it do nothing until there's a fix?

    Which board did you try it with?

  • I tried the AGPS sample configured for SUPL with a DK board.  See attached log.  It eventually gets a fix, but if you compare where my custom board stops vs the DK, it suggests that it's being blocked on cloud calls.


    *** Booting Zephyr OS build v2.4.0-ncs1  ***
    Flash regions           Domain          Permissions
    00 00 0x00000 0x08000   Secure          rwxl
    01 31 0x08000 0x100000  Non-Secure      rwxl
    
    Non-secure callable region 0 placed in flash region 0 with size 32.
    
    SRAM region             Domain          Permissions
    00 07 0x00000 0x10000   Secure          rwxl
    08 31 0x10000 0x40000   Non-Secure      rwxl
    
    Peripheral              Domain          Status
    00 NRF_P0               Non-Secure      OK
    01 NRF_CLOCK            Non-Secure      OK
    02 NRF_RTC0             Non-Secure      OK
    03 NRF_RTC1             Non-Secure      OK
    04 NRF_NVMC             Non-Secure      OK
    05 NRF_UARTE1           Non-Secure      OK
    06 NRF_UARTE2           Secure          SKIP
    07 NRF_TWIM2            Non-Secure      OK
    08 NRF_SPIM3            Non-Secure      OK
    09 NRF_TIMER0           Non-Secure      OK
    10 NRF_TIMER1           Non-Secure      OK
    11 NRF_TIMER2           Non-Secure      OK
    12 NRF_SAADC            Non-Secure      OK
    13 NRF_PWM0             Non-Secure      OK
    14 NRF_PWM1             Non-Secure      OK
    15 NRF_PWM2             Non-Secure      OK
    16 NRF_PWM3             Non-Secure      OK
    17 NRF_WDT              Non-Secure      OK
    18 NRF_IPC              Non-Secure      OK
    19 NRF_VMC              Non-Secure      OK
    20 NRF_FPU              Non-Secure      OK
    21 NRF_EGU1             Non-Secure      OK
    22 NRF_EGU2             Non-Secure      OK
    23 NRF_DPPIC            Non-Secure      OK
    24 NRF_GPIOTE1          Non-Secure      OK
    25 NRF_REGULATORS       Non-Secure      OK
    
    SPM: NS image at 0xc000
    SPM: NS MSP at 0x2002ee30
    SPM: NS reset vector at 0x11769
    SPM: prepare to jump to Non-Secure image.
    *** Booting Zephyr OS build v2.4.0-ncs1  ***
    I: A-GPS sample has started
    I: Connecting to LTE network. This may take minutes.
    I: PSM mode requested
    +CEREG: 2,"150D","00526D02",7,0,0,"11100000","11100000"
    +CSCON: 1
    +CEREG: 5,"150D","00526D02",7,,,"11100000","11100000"
    I: Connected to LTE network
    D: MAGPIO set: AT%XMAGPIO=1,0,0,1,1,1565,1586
    D: COEX0 set: AT%XCOEX0=1,1,1565,1586
    D: GPS socket created, fd: 1232491587
    I: CLOUD_EVT_CONNECTING
    I: CLOUD_EVT_CONNECTED
    I: CLOUD_EVT_PAIR_DONE
    E: Failed to save session state: -2
    I: CLOUD_EVT_READY
    I: Service info sent to cloud
    D: GPS mode is enabled
    D: GPS operational
    I: Periodic GPS search started with interval 240 s, timeout 120 s
    I: GPS_EVT_SEARCH_STARTED
    D: Waiting for time window to operate
    I: GPS_EVT_OPERATION_BLOCKED
    +CSCON: 0
    D: GPS has time window to operate
    I: GPS_EVT_OPERATION_UNBLOCKED
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 18
    D: A-GPS data update needed
    I: GPS_EVT_AGPS_DATA_NEEDED
    D: Using GPS driver to input assistance data
    I: SUPL is initialized
    +CSCON: 1
    D: ip 173.194.79.192 (c04fc2ad) port 7276
    I: Starting SUPL session
    D: ULP encoding length: 39
    D: Bytes sent: 39
    D: Bytes received: 34
    D: ULP ossDecode success, choice 3
    D: SUPL server responded using version 2.0.4
    D: SUPL response received
    D: ULP encoding length: 58
    D: Bytes sent: 58
    D: Bytes received: 708
    D: ULP ossDecode more input 4
    D: Bytes received: 1416
    D: ULP ossDecode more input 4
    D: Bytes received: 2124
    D: ULP ossDecode more input 4
    D: Bytes received: 2832
    D: ULP ossDecode more input 4
    D: Bytes received: 3065
    D: ULP ossDecode success, choice 5
    D: Sent A-GPS data to modem, type: 1
    D: Injected AGPS data, type: 1, size: 16
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 2
    D: Injected AGPS data, type: 2, size: 72
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: Sent A-GPS data to modem, type: 3
    D: Injected AGPS data, type: 3, size: 32
    D: No integrity data available
    D: Sent A-GPS data to modem, type: 4
    D: Injected AGPS data, type: 4, size: 8
    D: Sent A-GPS data to modem, type: 7
    D: Injected AGPS data, type: 6, size: 144
    D: No location data available
    D: Sent A-GPS data to modem, type: 8
    D: Injected AGPS data, type: 7, size: 16
    D: MCC location info injected, MCC: 311
    D:      Lat: 4257684 Lon: -5241016
    D:      Unc semiminor: 127
    D:      Unc semimajor: 127
    D:      Confidence: 35
    D:      Orientation: 0
    D: SUPL POS received
    D: read again
    D: Bytes received: 34
    D: ULP ossDecode success, choice 6
    D: SUPLEND:
    D:      Mask: 0
    D:      Status: 0
    D: SUPL END received
    D: SUPL session internal resources released
    D: SUPL session finished
    I: SUPL session finished successfully
    D: Waiting for time window to operate
    I: GPS_EVT_OPERATION_BLOCKED
    +CSCON: 0
    D: GPS has time window to operate
    I: GPS_EVT_OPERATION_UNBLOCKED
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 28
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 29
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 30
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 31
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 32
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 33
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 34
    I: Tracking: 8
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 35
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 36
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 37
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 38
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 39
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 40
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 41
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 42
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 43
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 44
    I: Tracking: 8  30
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 45
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 46
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 47
    I: Tracking: 8  27  30
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 48
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 49
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 50
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 51
    D: Waiting for time window to operate
    I: GPS_EVT_OPERATION_BLOCKED
    D: GPS has time window to operate
    I: GPS_EVT_OPERATION_UNBLOCKED
    I: Tracking: 8  27  28  30
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 4 Using: 0 Unhealthy: 0
    D: Seconds since last fix 55
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV 30: not used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 4 Using: 0 Unhealthy: 0
    D: Seconds since last fix 55
    D: Waiting for time window to operate
    I: GPS_EVT_OPERATION_BLOCKED
    D: GPS priority enabled
    D: GPS has time window to operate
    I: GPS_EVT_OPERATION_UNBLOCKED
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 68
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 69
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 70
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 71
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 72
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 73
    D: Tracking: 0 Using: 0 Unhealthy: 0
    D: Seconds since last fix 74
    I: Tracking: 8
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 75
    D: Tracking SV  8: not used,     healthy
    D: Tracking: 1 Using: 0 Unhealthy: 0
    D: Seconds since last fix 76
    I: Tracking: 7  8
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 77
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 78
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 79
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 80
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking: 2 Using: 0 Unhealthy: 0
    D: Seconds since last fix 81
    I: Tracking: 7  8  9
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking SV  9: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 82
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking SV  9: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 83
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking SV  9: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 84
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking SV  9: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 85
    D: Tracking SV  8: not used,     healthy
    D: Tracking SV  7: not used,     healthy
    D: Tracking SV  9: not used,     healthy
    D: Tracking: 3 Using: 0 Unhealthy: 0
    D: Seconds since last fix 86
    I: Tracking: 7  8  9  27
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 4 Using: 3 Unhealthy: 0
    D: Seconds since last fix 87
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 4 Using: 3 Unhealthy: 0
    D: Seconds since last fix 88
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 4 Using: 3 Unhealthy: 0
    D: Seconds since last fix 89
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 4 Using: 3 Unhealthy: 0
    D: Seconds since last fix 90
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 4 Using: 3 Unhealthy: 0
    D: Seconds since last fix 91
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27: not used,     healthy
    D: Tracking: 4 Using: 3 Unhealthy: 0
    D: Seconds since last fix 92
    I: Tracking: 7  8  9  27  28
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 5 Using: 4 Unhealthy: 0
    D: Seconds since last fix 93
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 5 Using: 4 Unhealthy: 0
    D: Seconds since last fix 94
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 5 Using: 4 Unhealthy: 0
    D: Seconds since last fix 95
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 5 Using: 4 Unhealthy: 0
    D: Seconds since last fix 96
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 5 Using: 4 Unhealthy: 0
    D: Seconds since last fix 97
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28: not used,     healthy
    D: Tracking: 5 Using: 4 Unhealthy: 0
    D: Seconds since last fix 98
    D: PVT: Position fix
    I: ---------       FIX       ---------
    I: Time to fix: 88 seconds
    I:
            Longitude:  -111.813017
            Latitude:   33.358843
            Altitude:   342.105499
            Speed:      0.074044
            Heading:    0.000000
            Date:       03-12-2020
            Time (UTC): 00:35:01
    
    I: -----------------------------------
    D: Tracking SV  8:     used,     healthy
    D: Tracking SV  7:     used,     healthy
    D: Tracking SV  9:     used,     healthy
    D: Tracking SV 27:     used,     healthy
    D: Tracking SV 28:     used,     healthy
    D: Tracking: 5 Using: 5 Unhealthy: 0
    D: Seconds since last fix 0
    D: NMEA: Position fix
    I: GPS position sent to cloud
    +CSCON: 1
    +CSCON: 0
    

Related