// sleep for max 5 seconds private static Address HandleState_Drive(Address lastRacingPoint) { int t = Environment.TickCount; if (webhelper.IsDriving()) { lastCarUsed = DateTime.Now; t = ApplicationSettings.Default.SleepPosition - 1000 - (Environment.TickCount - t); if (t > 0) { Thread.Sleep(t); // alle 5 sek eine positionsmeldung } if (odometerLastTrip != DBHelper.currentJSON.current_odometer) { odometerLastTrip = DBHelper.currentJSON.current_odometer; lastOdometerChanged = DateTime.Now; } else { if (webhelper.IsCharging(true)) { Logfile.Log("Charging during Drive -> Finish Trip!!!"); DriveFinished(); } else { // Odometer didn't change for 600 seconds TimeSpan ts = DateTime.Now - lastOdometerChanged; if (ts.TotalSeconds > 600) { Logfile.Log("Odometer didn't change for 600 seconds -> Finish Trip!!!"); DriveFinished(); } } } if (WebHelper.geofence.RacingMode) { Address a = WebHelper.geofence.GetPOI(DBHelper.currentJSON.latitude, DBHelper.currentJSON.longitude); if (a != null) { if (lastRacingPoint == null) { lastRacingPoint = a; Logfile.Log("RACING MODE: Finish Trip!"); DriveFinished(); } } else { lastRacingPoint = null; } } } else { webhelper.IsDriving(true); // insert a last position. Maybe the last one is too old DriveFinished(); ShareData sd = new ShareData(webhelper.TaskerHash); sd.SendAllChargingData(); } return(lastRacingPoint); }