async Task AddOBDDataToPoint(TripPoint point)
{
//Read data from the OBD device
point.HasOBDData = false;
Dictionary<string, string> obdData = null;
if (obdDataProcessor != null)
obdData = await obdDataProcessor.ReadOBDData();
if (obdData != null)
{
double speed = -255,
rpm = -255,
efr = -255,
el = -255,
stfb = -255,
ltfb = -255,
fr = -255,
tp = -255,
rt = -255,
dis = -255,
rtp = -255;
var vin = String.Empty;
if (obdData.ContainsKey("el") && !string.IsNullOrWhiteSpace(obdData["el"]))
{
if (!double.TryParse(obdData["el"], out el))
el = -255;
}
if (obdData.ContainsKey("stfb"))
double.TryParse(obdData["stfb"], out stfb);
if (obdData.ContainsKey("ltfb"))
double.TryParse(obdData["ltfb"], out ltfb);
if (obdData.ContainsKey("fr"))
{
double.TryParse(obdData["fr"], out fr);
if (fr != -255)
{
fuelConsumptionRate = fr;
}
}
if (obdData.ContainsKey("tp"))
double.TryParse(obdData["tp"], out tp);
if (obdData.ContainsKey("rt"))
double.TryParse(obdData["rt"], out rt);
if (obdData.ContainsKey("dis"))
double.TryParse(obdData["dis"], out dis);
if (obdData.ContainsKey("rtp"))
double.TryParse(obdData["rtp"], out rtp);
if (obdData.ContainsKey("spd"))
double.TryParse(obdData["spd"], out speed);
if (obdData.ContainsKey("rpm"))
double.TryParse(obdData["rpm"], out rpm);
if (obdData.ContainsKey("efr") && !string.IsNullOrWhiteSpace(obdData["efr"]))
{
if (!double.TryParse(obdData["efr"], out efr))
efr = -255;
}
else
{
efr = -255;
}
if (obdData.ContainsKey("vin"))
vin = obdData["vin"];
point.EngineLoad = el;
point.ShortTermFuelBank = stfb;
point.LongTermFuelBank = ltfb;
point.MassFlowRate = fr;
point.ThrottlePosition = tp;
point.Runtime = rt;
point.DistanceWithMalfunctionLight = dis;
point.RelativeThrottlePosition = rtp;
point.Speed = speed;
point.RPM = rpm;
point.EngineFuelRate = efr;
point.VIN = vin;
#if DEBUG
foreach (var kvp in obdData)
Logger.Instance.Track($"{kvp.Key} {kvp.Value}");
#endif
point.HasOBDData = true;
}
}