I assume you are referring to what I was reporting earlier, but I think there might be a misunderstanding so I’ll try to explain the situation more clearly.
When speed gets low, some receivers (like Emlid) stop sending heading as part of VTG. That is clearly intentional, at very low speeds heading is unreliable and the standard says that if data is not available the field should remain empty. So when standing still the message is something like
"$GPVTG,,T,,M,0.01,N,0.02,K,D"
Now in AOG (v4 source code which is available) the conditions to interpret VTG (ParseVTG() ) at all is
if (!String.IsNullOrEmpty(words[1]) && !String.IsNullOrEmpty(words[5]))
{
//kph for speed - knots read
double.TryParse(words[5], NumberStyles.Float, CultureInfo.InvariantCulture, out speed);
speed = Math.Round(speed * 1.852, 1);
//True heading
double.TryParse(words[1], NumberStyles.Float, CultureInfo.InvariantCulture, out headingTrue);
}
which means that whenever the heading field is empty, the whole message is ignored. I think it could be safely replaced with something like
if (!String.IsNullOrEmpty(words[1]))
{
//True heading
double.TryParse(words[1], NumberStyles.Float, CultureInfo.InvariantCulture, out headingTrue);
}
//parse speed if available (why not take kmh directly?)
if (!String.IsNullOrEmpty(words[5]))
{
//kph for speed - knots read
double.TryParse(words[5], NumberStyles.Float, CultureInfo.InvariantCulture, out speed);
speed = Math.Round(speed * 1.852, 1);
}
This way, the speed would get updated even if the heading is missing. Earlier when RMC was also used this problem wasn’t showing, as RMC also contains speed.
I hope this clarifies the case a bit.