2018-07-08 14:51:48 +00:00
|
|
|
#! /usr/bin/gawk -i
|
|
|
|
|
|
|
|
|
|
BEGIN {
|
|
|
|
|
FS = ";"
|
|
|
|
|
C[2] = "Uptime"
|
|
|
|
|
C[3] = "Time"
|
|
|
|
|
C[4] = "Date"
|
|
|
|
|
C[5] = "RMC"
|
|
|
|
|
C[6] = "nSAT"
|
|
|
|
|
C[7] = "Lat"
|
|
|
|
|
C[8] = "Lon"
|
|
|
|
|
C[9] = "SoG"
|
|
|
|
|
C[10] = "kmh"
|
|
|
|
|
C[11] = "CoG"
|
|
|
|
|
C[12] = "Alt"
|
|
|
|
|
C[13] = "bTemp"
|
|
|
|
|
C[14] = "Temp"
|
|
|
|
|
C[15] = "Hum"
|
|
|
|
|
C[16] = "Pres"
|
|
|
|
|
C[17] = "Vbat"
|
|
|
|
|
C[18] = "Stat"
|
|
|
|
|
n1 = 2
|
|
|
|
|
n2 = 18
|
|
|
|
|
for (n in C) C[C[n]] = n
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isGPS() {
|
|
|
|
|
if (!/^\$/ || $C["RMC"]!="Y") return 0
|
2020-03-05 11:27:46 +00:00
|
|
|
split($C["Time"], TT, /:/)
|
2018-07-08 14:51:48 +00:00
|
|
|
split($C["Date"], DD, /\./)
|
|
|
|
|
ISO_Time = DD[3]"-"DD[2]"-"DD[1]"T"TT[1]":"TT[2]":"TT[3]"Z"
|
2021-03-12 20:38:26 +00:00
|
|
|
Time=mktime(DD[3]" "DD[2]" "DD[1]" "TT[1]" "TT[2]" "TT[3], "UTC")
|
|
|
|
|
file_epoch = Time-Uptime
|
2018-07-08 14:51:48 +00:00
|
|
|
split($C["Lon"], LL, / /)
|
|
|
|
|
Lon = LL[1]+LL[2]/60
|
|
|
|
|
if (LL[3]=="W") Lon = -Lon
|
|
|
|
|
split($C["Lat"], LL, / /)
|
|
|
|
|
Lat = LL[1]+LL[2]/60
|
|
|
|
|
if (LL[3]=="S") Lat = -Lat
|
|
|
|
|
return 1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function isLog() {
|
|
|
|
|
if (!/^\$/) return 0
|
2021-03-12 20:38:26 +00:00
|
|
|
split($C["Uptime"], TT, /:/)
|
2018-07-08 14:51:48 +00:00
|
|
|
Uptime = TT[1]*3600 + TT[2]*60 + TT[3]
|
2018-08-07 04:50:37 +00:00
|
|
|
p=$C["Pres"]+0
|
|
|
|
|
T=$C["Temp"]+0
|
|
|
|
|
H=$C["Hum"]+0
|
|
|
|
|
V=$C["Vbat"]+0
|
2021-03-12 20:38:26 +00:00
|
|
|
Time = file_epoch+Uptime
|
2018-07-08 14:51:48 +00:00
|
|
|
return isGPS()+1
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function doHead() {
|
|
|
|
|
for (n=n1; n<=N2; n++) printf " %s", C[n]
|
|
|
|
|
printf "\n"
|
|
|
|
|
}
|
2021-03-12 20:38:26 +00:00
|
|
|
|
2018-07-08 14:51:48 +00:00
|
|
|
function all() {
|
|
|
|
|
gps = isLog()
|
2021-03-12 20:38:26 +00:00
|
|
|
if (oldgps != gps) print Nix
|
|
|
|
|
oldgps=gps
|
2018-07-08 14:51:48 +00:00
|
|
|
if (gps>0) {
|
|
|
|
|
printf "%d", Uptime
|
|
|
|
|
printf " %.2f", $C["bTemp"]
|
2018-08-07 04:50:37 +00:00
|
|
|
printf " %.2f", T
|
|
|
|
|
printf " %.2f", H
|
|
|
|
|
printf " %.2f", p
|
|
|
|
|
printf " %.3f", V
|
2021-03-12 20:38:26 +00:00
|
|
|
printf " %u", Time
|
2018-07-08 14:51:48 +00:00
|
|
|
}
|
|
|
|
|
if (gps>1) {
|
|
|
|
|
printf " %s", ISO_Time
|
|
|
|
|
printf " %d", $C["nSAT"]
|
|
|
|
|
printf " %.7f %.7f %.1f", Lat, Lon, $C["Alt"]
|
|
|
|
|
printf " %.3f %.1f", $C["SoG"], $C["CoG"]
|
|
|
|
|
}
|
|
|
|
|
if (gps>0) {
|
|
|
|
|
printf "\n"
|
|
|
|
|
}
|
|
|
|
|
return gps
|
|
|
|
|
}
|
2021-03-12 20:38:26 +00:00
|
|
|
|
2018-08-07 04:50:37 +00:00
|
|
|
function gpslog() {
|
|
|
|
|
printf "%d %.7f %.7f %.1f %.3f %.1f %d\n", Uptime, Lon, Lat, $C["Alt"], $C["SoG"], $C["CoG"], $C["nSAT"]
|
|
|
|
|
}
|