static void gpsHandleProtocol(void) { bool newDataReceived = false; // Call protocol-specific code if (gpsProviders[gpsState.gpsConfig->provider].read) { newDataReceived = gpsProviders[gpsState.gpsConfig->provider].read(); } // Received new update for solution data if (newDataReceived) { // Set GPS fix flag only if we have 3D fix if (gpsSol.fixType == GPS_FIX_3D) { ENABLE_STATE(GPS_FIX); } else { DISABLE_STATE(GPS_FIX); } // Update GPS coordinates etc sensorsSet(SENSOR_GPS); onNewGPSData(); // Update timeout gpsState.lastLastMessageMs = gpsState.lastMessageMs; gpsState.lastMessageMs = millis(); // Update statistics gpsStats.lastMessageDt = gpsState.lastMessageMs - gpsState.lastLastMessageMs; } }
static void gpsFakeGPSUpdate(void) { if (millis() - gpsState.lastMessageMs > 100) { gpsSol.fixType = GPS_FIX_3D; gpsSol.numSat = 6; gpsSol.llh.lat = 509102311; gpsSol.llh.lon = -15349744; gpsSol.llh.alt = 0; gpsSol.groundSpeed = 0; gpsSol.groundCourse = 0; gpsSol.velNED[X] = 0; gpsSol.velNED[Y] = 0; gpsSol.velNED[Z] = 0; gpsSol.flags.validVelNE = 1; gpsSol.flags.validVelD = 1; gpsSol.flags.validEPE = 1; gpsSol.eph = 100; gpsSol.epv = 100; ENABLE_STATE(GPS_FIX); sensorsSet(SENSOR_GPS); onNewGPSData(); gpsState.lastLastMessageMs = gpsState.lastMessageMs; gpsState.lastMessageMs = millis(); gpsSetState(GPS_RECEIVING_DATA); } }
static void gpsHandleProtocol(void) { bool newDataReceived = false; // Call protocol-specific code if (gpsProviders[gpsState.gpsConfig->provider].read) { newDataReceived = gpsProviders[gpsState.gpsConfig->provider].read(); } // Received new update for solution data if (newDataReceived) { // Set GPS fix flag only if we have 3D fix if (gpsSol.fixType == GPS_FIX_3D && gpsSol.numSat >= gpsConfig()->gpsMinSats) { ENABLE_STATE(GPS_FIX); } else { /* When no fix available - reset flags as well */ gpsSol.flags.validVelNE = 0; gpsSol.flags.validVelD = 0; gpsSol.flags.validEPE = 0; DISABLE_STATE(GPS_FIX); } // Update GPS coordinates etc sensorsSet(SENSOR_GPS); onNewGPSData(); // Update timeout gpsState.lastLastMessageMs = gpsState.lastMessageMs; gpsState.lastMessageMs = millis(); // Update statistics gpsStats.lastMessageDt = gpsState.lastMessageMs - gpsState.lastLastMessageMs; } }