Export all possible SituationData fields.

pull/406/head
Christopher Young 2016-03-24 00:26:56 -04:00
rodzic 934c24ee71
commit 0a26cfc240
2 zmienionych plików z 28 dodań i 28 usunięć

Wyświetl plik

@ -417,7 +417,7 @@ func makeStratuxStatus() []byte {
// Valid and enabled flags.
// Valid/Enabled: GPS portion.
if isGPSValid() {
switch mySituation.quality {
switch mySituation.Quality {
case 1: // 1 = 3D GPS.
msg[13] = 1
case 2: // 2 = DGPS (SBAS /WAAS).
@ -733,13 +733,13 @@ func cpuTempMonitor() {
}
func updateStatus() {
if mySituation.quality == 2 {
if mySituation.Quality == 2 {
globalStatus.GPS_solution = "DGPS (SBAS / WAAS)"
} else if mySituation.quality == 1 {
} else if mySituation.Quality == 1 {
globalStatus.GPS_solution = "3D GPS"
} else if mySituation.quality == 6 {
} else if mySituation.Quality == 6 {
globalStatus.GPS_solution = "Dead Reckoning"
} else if mySituation.quality == 0 {
} else if mySituation.Quality == 0 {
globalStatus.GPS_solution = "No Fix"
} else {
globalStatus.GPS_solution = "Unknown"
@ -749,7 +749,7 @@ func updateStatus() {
mySituation.Satellites = 0
mySituation.SatellitesSeen = 0
mySituation.SatellitesTracked = 0
mySituation.quality = 0
mySituation.Quality = 0
globalStatus.GPS_solution = "Disconnected"
globalStatus.GPS_connected = false
}
@ -1186,7 +1186,7 @@ func printStats() {
log.Printf(" - UAT/min %s/%s [maxSS=%.02f%%], ES/min %s/%s\n, Total traffic targets tracked=%s", humanize.Comma(int64(globalStatus.UAT_messages_last_minute)), humanize.Comma(int64(globalStatus.UAT_messages_max)), float64(maxSignalStrength)/10.0, humanize.Comma(int64(globalStatus.ES_messages_last_minute)), humanize.Comma(int64(globalStatus.ES_messages_max)), humanize.Comma(int64(len(seenTraffic))))
log.Printf(" - Network data messages sent: %d total, %d nonqueueable. Network data bytes sent: %d total, %d nonqueueable.\n", globalStatus.NetworkDataMessagesSent, globalStatus.NetworkDataMessagesSentNonqueueable, globalStatus.NetworkDataBytesSent, globalStatus.NetworkDataBytesSentNonqueueable)
if globalSettings.GPS_Enabled {
log.Printf(" - Last GPS fix: %s, GPS solution type: %d using %d satellites (%d/%d seen/tracked), NACp: %d, est accuracy %.02f m\n", stratuxClock.HumanizeTime(mySituation.LastFixLocalTime), mySituation.quality, mySituation.Satellites, mySituation.SatellitesSeen, mySituation.SatellitesTracked, mySituation.NACp, mySituation.Accuracy)
log.Printf(" - Last GPS fix: %s, GPS solution type: %d using %d satellites (%d/%d seen/tracked), NACp: %d, est accuracy %.02f m\n", stratuxClock.HumanizeTime(mySituation.LastFixLocalTime), mySituation.Quality, mySituation.Satellites, mySituation.SatellitesSeen, mySituation.SatellitesTracked, mySituation.NACp, mySituation.Accuracy)
log.Printf(" - GPS vertical velocity: %.02f ft/sec; GPS vertical accuracy: %v m\n", mySituation.GPSVertVel, mySituation.AccuracyVert)
}
}

Wyświetl plik

@ -34,10 +34,10 @@ type SituationData struct {
mu_GPS *sync.Mutex
// From GPS.
lastFixSinceMidnightUTC float32
LastFixSinceMidnightUTC float32
Lat float32
Lng float32
quality uint8
Quality uint8
HeightAboveEllipsoid float32 // GPS height above WGS84 ellipsoid, ft. This is specified by the GDL90 protocol, but most EFBs use MSL altitude instead. HAE is about 70-100 ft below GPS MSL altitude over most of the US.
GeoidSep float32 // geoid separation, ft, MSL minus HAE (used in altitude calculation)
Satellites uint16 // satellites used in solution
@ -60,7 +60,7 @@ type SituationData struct {
// From BMP180 pressure sensor.
Temp float64
Pressure_alt float64
lastTempPressTime time.Time
LastTempPressTime time.Time
// From MPU6050 accel/gyro.
Pitch float64
@ -456,16 +456,16 @@ func processNMEALine(l string) bool {
okReturn := true
if x[8] == "D2" || x[8] == "D3" {
mySituation.quality = 2
mySituation.Quality = 2
} else if x[8] == "G2" || x[8] == "G3" {
mySituation.quality = 1
mySituation.Quality = 1
} else if x[8] == "DR" || x[8] == "RK" {
mySituation.quality = 6
mySituation.Quality = 6
} else if x[8] == "NF" {
mySituation.quality = 0
mySituation.Quality = 0
okReturn = false // better to have no data than wrong data
} else {
mySituation.quality = 0
mySituation.Quality = 0
okReturn = false // better to have no data than wrong data
}
@ -501,7 +501,7 @@ func processNMEALine(l string) bool {
return false
}
mySituation.lastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
mySituation.LastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
// field 3-4 = lat
@ -645,7 +645,7 @@ func processNMEALine(l string) bool {
if err1 != nil || err2 != nil || err3 != nil {
return false
}
mySituation.lastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
mySituation.LastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
// field 3 is date
@ -711,7 +711,7 @@ func processNMEALine(l string) bool {
if err1 != nil {
return false
}
mySituation.quality = uint8(q) // 1 = 3D GPS; 2 = DGPS (SBAS /WAAS)
mySituation.Quality = uint8(q) // 1 = 3D GPS; 2 = DGPS (SBAS /WAAS)
// Timestamp.
if len(x[1]) < 7 {
@ -724,7 +724,7 @@ func processNMEALine(l string) bool {
return false
}
mySituation.lastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
mySituation.LastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
// Latitude.
if len(x[2]) < 4 {
@ -770,7 +770,7 @@ func processNMEALine(l string) bool {
if err1 != nil {
return false
}
if mySituation.quality == 2 {
if mySituation.Quality == 2 {
mySituation.Accuracy = float32(hdop * 4.0) //Estimate for WAAS / DGPS solution
} else {
mySituation.Accuracy = float32(hdop * 8.0) //Estimate for 3D non-WAAS solution
@ -823,10 +823,10 @@ func processNMEALine(l string) bool {
defer mySituation.mu_GPS.Unlock()
if x[2] != "A" { // invalid fix
mySituation.quality = 0
mySituation.Quality = 0
return false
} else if mySituation.quality == 0 {
mySituation.quality = 1 // fallback option; indicate if the position fix is valid even if GGA or PUBX,00 aren't received
} else if mySituation.Quality == 0 {
mySituation.Quality = 1 // fallback option; indicate if the position fix is valid even if GGA or PUBX,00 aren't received
}
// Timestamp.
@ -839,7 +839,7 @@ func processNMEALine(l string) bool {
if err1 != nil || err2 != nil || err3 != nil {
return false
}
mySituation.lastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
mySituation.LastFixSinceMidnightUTC = float32(3600*hr+60*min) + float32(sec)
if len(x[9]) == 6 {
// Date of Fix, i.e 191115 = 19 November 2015 UTC field 9
@ -921,7 +921,7 @@ func processNMEALine(l string) bool {
// M: manual forced to 2D or 3D mode
// A: automatic switching between 2D and 3D modes
if (x[1] != "A") && (x[1] != "M") { // invalid fix
mySituation.quality = 0
mySituation.Quality = 0
return false
}
@ -953,7 +953,7 @@ func processNMEALine(l string) bool {
if err1 != nil {
return false
}
if mySituation.quality == 2 {
if mySituation.Quality == 2 {
mySituation.Accuracy = float32(hdop * 4.0) // Rough 95% confidence estimate for WAAS / DGPS solution
} else {
mySituation.Accuracy = float32(hdop * 8.0) // Rough 95% confidence estimate for 3D non-WAAS solution
@ -1056,7 +1056,7 @@ func tempAndPressureReader() {
} else {
mySituation.Temp = temp
mySituation.Pressure_alt = alt
mySituation.lastTempPressTime = stratuxClock.Time
mySituation.LastTempPressTime = stratuxClock.Time
}
}
globalStatus.RY835AI_connected = false
@ -1161,7 +1161,7 @@ func isAHRSValid() bool {
}
func isTempPressValid() bool {
return stratuxClock.Since(mySituation.lastTempPressTime) < 15*time.Second
return stratuxClock.Since(mySituation.LastTempPressTime) < 15*time.Second
}
func initAHRS() error {