/// <summary> /// Gives speed directly computed from the OBD stack (km/h) /// </summary> public static int? GetObdSpeed(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(CarDiagnostic.MDI_OBD_SPEED.Key)) return null; return trackingData.GetFieldAsInt(CarDiagnostic.MDI_OBD_SPEED.Key); }
/// <summary> /// Time since the beginning of the Journey in milliseconds /// </summary> public static int? GetJourneyTime(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(Easyconnect.MDI_JOURNEY_TIME.Key)) return null; return trackingData.GetFieldAsInt(Easyconnect.MDI_JOURNEY_TIME.Key); }
/// <summary> /// Journey state - on C4Evo, when Ignition is ON – On C4Dongle, when RPM is not available (No RPM or C4Dongle offline) /// true if Journey on, false if not /// </summary> public static bool? GetJourneyState(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(Easyconnect.MDI_JOURNEY_STATE.Key)) return null; return trackingData.GetFieldAsInt(Easyconnect.MDI_JOURNEY_STATE.Key) == 0 ? false : true; }
/// <summary> /// Y-axis value at the begin of pattern detection /// </summary> /// <returns>mG</returns> public static int? GetAccYBegin(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(DriverBehavior.BEHAVE_ACC_Y_BEGIN.Key)) return null; return trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_ACC_Y_BEGIN.Key); }
/// <summary> /// You can update data cache manualy with this function. It will be apply after internal process /// Your modification will not be overwrite. /// </summary> /// <param name="asset"></param> /// <param name="data"></param> public void UpdateManualyDataCache(string asset, string field, ITracking data) { TrackingData currentHistory = null; if (_fieldsCache.ContainsKey(asset)) { currentHistory = _fieldsCache[asset]; UpdateCache(currentHistory, field, data); } }
private void UpdateCache(TrackingData history, string field, ITracking data) { if (!history.fields.ContainsKey(field)) { history.fields.Add(field, ((TrackingData)data).fields[field]); } else { history.fields[field] = ((TrackingData)data).fields[field]; } }
/// <summary> /// Get course of degrees /// </summary> public static double?GetHeadingEnd(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(DriverBehavior.BEHAVE_GPS_HEADING_END.Key)) { return(null); } return(trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_GPS_HEADING_END.Key) / 1000.0); }
/// <summary> /// Speed over ground /// </summary> /// <returns>Knots * 10^3</returns> public static int?GetSpeedEnd(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(DriverBehavior.BEHAVE_GPS_SPEED_END.Key)) { return(null); } return(trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_GPS_SPEED_END.Key)); }
/// <summary> /// Journey driving time in milliseconds /// </summary> public static int?GetDrivingJourney(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(Easyconnect.MDI_DRIVING_JOURNEY.Key)) { return(null); } return(trackingData.GetFieldAsInt(Easyconnect.MDI_DRIVING_JOURNEY.Key)); }
/// <summary> /// Overspeed state – When GPS speed is higher than overspeed.speedThreshold /// (in kilometers) during overspeed.timeThreshold (in milliseconds). /// true if overspeed, false if not /// </summary> public static bool?GetOverspeed(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(Easyconnect.MDI_OVERSPEED.Key)) { return(null); } return(trackingData.GetFieldAsInt(Easyconnect.MDI_OVERSPEED.Key) == 0 ? false : true); }
/// <summary> /// Journey state - on C4Evo, when Ignition is ON – On C4Dongle, when RPM is not available (No RPM or C4Dongle offline) /// true if Journey on, false if not /// </summary> public static bool?GetJourneyState(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(Easyconnect.MDI_JOURNEY_STATE.Key)) { return(null); } return(trackingData.GetFieldAsInt(Easyconnect.MDI_JOURNEY_STATE.Key) == 0 ? false : true); }
/// <summary> /// Number of overspeeds since the beginning of the Journey /// </summary> public static int?GetOverspeedCounter(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(Easyconnect.MDI_OVERSPEED_COUNTER.Key)) { return(null); } return(trackingData.GetFieldAsInt(Easyconnect.MDI_OVERSPEED_COUNTER.Key)); }
/// <summary> /// Z-axis value at the begin of pattern detection /// </summary> /// <returns>mG</returns> public static int?GetAccZPeak(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(DriverBehavior.BEHAVE_ACC_Z_PEAK.Key)) { return(null); } return(trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_ACC_Z_PEAK.Key)); }
/// <summary> /// unique event id per session (reset at reboot) /// </summary> public static int?GetUniqueID(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(DriverBehavior.BEHAVE_UNIQUE_ID.Key)) { return(null); } return(trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_UNIQUE_ID.Key)); }
/// <summary> ///Returns the vehicle number identification retrieved from the OBD stack /// </summary> public static string GetObdVin(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(CarDiagnostic.MDI_OBD_VIN.Key)) { return(null); } return(trackingData.GetFieldAsString(CarDiagnostic.MDI_OBD_VIN.Key)); }
/// <summary> /// Gives engine round per minute directly retrieved from the OBD stack (rpm) /// </summary> public static int?GetObdRpm(ITracking trackingData) { if (trackingData == null) { throw new NullReferenceException("ITracking is not initialize"); } if (!trackingData.ContainsField(CarDiagnostic.MDI_OBD_RPM.Key)) { return(null); } return(trackingData.GetFieldAsInt(CarDiagnostic.MDI_OBD_RPM.Key)); }
private void FillTrackingDataUserChoice(ITracking data, TrackingData history, bool updateCache = true) { bool fixMovementValue = false; foreach (string field in _fieldsUse) { /* Fix Movement before to update data cache */ if (field == MD.CloudConnect.FieldDefinition.MVT_STATE.Key && _fixMoving) { fixMovementValue = IsInMovement(data, history); if (data.ContainsField(MD.CloudConnect.FieldDefinition.MVT_STATE.Key)) { data.IsMoving = fixMovementValue; } else if (history.ContainsField(MD.CloudConnect.FieldDefinition.MVT_STATE.Key)) { history.IsMoving = fixMovementValue; } } /* End Fix Movement*/ if (data.ContainsField(field)) { if (updateCache) { UpdateCache(history, field, data); } } else { if (history.fields.ContainsKey(field)) { ((TrackingData)data).fields.Add(field, history.fields[field]); } else { ((TrackingData)data).fields.Add(field, new Field()); } } } if (((TrackingData)data).location == null) { ((TrackingData)data).location = (double[])history.location.Clone(); } else { history.location[0] = data.Longitude; history.location[1] = data.Latitude; } }
public List <MDData> Decode(string jsonData) { List <MDData> datas = JsonConvert.DeserializeObject <List <MDData> >(jsonData); if (datas != null && datas.Count > 0) { datas = datas.OrderBy(x => x.DateOfData).ToList(); if (_dataCache != null && _fieldsUse != null && _fieldsUse.Length > 0) { TrackingData history = null; foreach (MD.CloudConnect.MDData data in datas) { if (data.Meta.Event == "track") { ITracking track = (ITracking)data.Tracking; if (!_fieldsCache.ContainsKey(track.Asset)) { history = GeneratePayload(track.Asset, _fieldsUse); history.Recorded_at = _dataCache.getHistoryFor(track.Asset, (ITracking)history); _fieldsCache.Add(track.Asset, history); } else { history = _fieldsCache[track.Asset]; } if (track.Recorded_at.Ticks > history.Recorded_at.Ticks && track.Recorded_at.Ticks <= track.Received_at.Ticks) { FillTrackingDataUserChoice(track, history); history.Recorded_at = track.Recorded_at; } else if (_autoFilter) { data.ShouldBeIgnore = true; } else { FillTrackingDataUserChoice(track, history, false); } } } } return(datas.Where(x => !x.ShouldBeIgnore).ToList()); } else { return(new List <MDData>()); } }
private bool MinDistanceDetected(ITracking p1, ITracking p2) { if (p2.Longitude - p1.Longitude > MinDistanceToDetectMovement) { return(true); } if (p2.Latitude - p1.Latitude > MinDistanceToDetectMovement) { return(true); } if (Math.Sqrt(Math.Abs(Math.Pow(p2.Longitude - p1.Longitude, 2) + Math.Pow(p2.Latitude - p1.Latitude, 2))) >= MinDistanceToDetectMovement) { return(true); } return(false); }
private bool IsInMovement(ITracking current, ITracking previous) { if (current.Longitude != 0.0 && previous.Longitude != 0.0) { return(MinDistanceDetected(previous, current)); } else { if (current.ContainsField(MD.CloudConnect.FieldDefinition.MVT_STATE.Key)) { return(current.IsMoving); } else if (current.SpeedKmPerHour > 5.0) { return(true); } else { return(false); } } }
private void Window_Loaded(object sender, RoutedEventArgs e) { tracking = new Tracking("EmailAttatchment", "UA-64794245-3"); }
/// <summary> ///Returns the vehicle number identification retrieved from the OBD stack /// </summary> public static string GetObdVin(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(CarDiagnostic.MDI_OBD_VIN.Key)) return null; return trackingData.GetFieldAsString(CarDiagnostic.MDI_OBD_VIN.Key); }
public IEnumerator <bool> ProgramInit() { #region serializer nameSerializer = new INISerializer("HaE MissileBase"); nameSerializer.AddValue("missileTag", x => x, "[HaE Missile]"); nameSerializer.AddValue("siloDoorTag", x => x, "[HaE SiloDoor]"); nameSerializer.AddValue("missileStatusLCDTag", x => x, "[HaE MissileStatus]"); nameSerializer.AddValue("targetingCameraName", x => x, "TargetingCamera"); nameSerializer.AddValue("controllername", x => x, "controller"); nameSerializer.AddValue("IgnoreTag", x => x, "[IgnoreTracker]"); nameSerializer.AddValue("targetingCastLength", x => double.Parse(x), 3000); if (Me.CustomData == "") { string temp = Me.CustomData; nameSerializer.FirstSerialization(ref temp); Me.CustomData = temp; } else { nameSerializer.DeSerialize(Me.CustomData); } yield return(true); #endregion #region fetchblocks GridTerminalSystemUtils GTS = new GridTerminalSystemUtils(Me, GridTerminalSystem); missiles = new MissileManager(GTS, this, missileTag); yield return(true); var antennas = new List <IMyRadioAntenna>(); GTS.GetBlocksOfTypeOnGrid(antennas); yield return(true); var camera = GridTerminalSystem.GetBlockWithName(targetingCameraName) as IMyCameraBlock; var controller = GridTerminalSystem.GetBlockWithName(controllername) as IMyShipController; yield return(true); #endregion #region initModules if (antennas.Count > 0) { commsHandler = new CommsHandler(this, antennas.First()); } else { commsHandler = new CommsHandler(this, null); } var commands = new Commands(this, commsHandler); commands.RegisterCommands(); silos = new MissileSilos(GTS, this, siloDoorTag); yield return(true); if (camera != null && controller != null) { entityTrackingModule = new EntityTracking_Module(GTS, controller, camera, IgnoreTag); ITracking cameraTracker = null; foreach (ITracking tracker in entityTrackingModule.ObjectTrackers) { var camT = tracker as LidarTracking; if (camT != null) { cameraTracker = camT; } } entityTrackingModule.ObjectTrackers.Clear(); entityTrackingModule.ObjectTrackers.Add(cameraTracker); entityTrackingModule.onEntityDetected += OnEntityDetected; } else { Echo($"camera: {camera != null}\ncontroller: {controller != null}"); } yield return(true); var lcds = new List <IMyTextPanel>(); GridTerminalSystem.GetBlocksOfType(lcds, x => x.CustomName.Contains(missileStatusLCDTag)); statusWriter = new StatusWriter(this, lcds); #endregion initialized = true; }
public static string GetCheckpointText(ITracking item) { return(string.Format("{0} by {1}, {2}", item.CheckpointName, item.LName, item.FName)); }
/// <summary> /// Speed over ground /// </summary> /// <returns>Knots * 10^3</returns> public static int? GetSpeedPeak(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(DriverBehavior.BEHAVE_GPS_SPEED_PEAK.Key)) return null; return trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_GPS_SPEED_PEAK.Key); }
/// <summary> /// unique event id per session (reset at reboot) /// </summary> public static int? GetUniqueID(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(DriverBehavior.BEHAVE_UNIQUE_ID.Key)) return null; return trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_UNIQUE_ID.Key); }
/// <summary> /// Longitude in degrees /// </summary> public static double? GetLongitude(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(DriverBehavior.BEHAVE_LONG.Key)) return null; return trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_LONG.Key) / 100000.0; }
/// <summary> /// Get course of degrees /// </summary> public static double? GetHeadingPeak(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(DriverBehavior.BEHAVE_GPS_HEADING_PEAK.Key)) return null; return trackingData.GetFieldAsInt(DriverBehavior.BEHAVE_GPS_HEADING_PEAK.Key) / 1000.0; }
/// <summary> /// Number of overspeeds since the beginning of the Journey /// </summary> public static bool? GetTowAway(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(Easyconnect.MDI_TOW_AWAY.Key)) return null; return trackingData.GetFieldAsInt(Easyconnect.MDI_TOW_AWAY.Key) == 0 ? false : true; }
private void FillTrackingDataUserChoice(ITracking data, TrackingData history, bool updateCache = true) { bool fixMovementValue = false; foreach (string field in _fieldsUse) { /* Fix Movement before to update data cache */ if (field == MD.CloudConnect.FieldDefinition.MVT_STATE.Key && _fixMoving) { fixMovementValue = IsInMovement(data, history); if (data.ContainsField(MD.CloudConnect.FieldDefinition.MVT_STATE.Key)) data.IsMoving = fixMovementValue; else if (history.ContainsField(MD.CloudConnect.FieldDefinition.MVT_STATE.Key)) history.IsMoving = fixMovementValue; } /* End Fix Movement*/ if (data.ContainsField(field)) { if (updateCache) { UpdateCache(history, field, data); } } else { if (history.fields.ContainsKey(field)) ((TrackingData)data).fields.Add(field, history.fields[field]); else ((TrackingData)data).fields.Add(field, new Field()); } } if (((TrackingData)data).location == null) { ((TrackingData)data).location = (double[])history.location.Clone(); } else { history.location[0] = data.Longitude; history.location[1] = data.Latitude; } }
private bool MinDistanceDetected(ITracking p1, ITracking p2) { if (p2.Longitude - p1.Longitude > MinDistanceToDetectMovement) return true; if (p2.Latitude - p1.Latitude > MinDistanceToDetectMovement) return true; if (Math.Sqrt(Math.Abs(Math.Pow(p2.Longitude - p1.Longitude, 2) + Math.Pow(p2.Latitude - p1.Latitude, 2))) >= MinDistanceToDetectMovement) return true; return false; }
public TrackingController(ITracking tracking, IOrders orders, IProducts products) { this.tracking = tracking; this.orders = orders; this.products = products; }
private bool IsInMovement(ITracking current, ITracking previous) { if (current.Longitude != 0.0 && previous.Longitude != 0.0) { return MinDistanceDetected(previous, current); } else { if (current.ContainsField(MD.CloudConnect.FieldDefinition.MVT_STATE.Key)) return current.IsMoving; else if (current.SpeedKmPerHour > 5.0) return true; else return false; } }
/// <summary> /// Number of overspeeds since the beginning of the Journey /// </summary> public static int? GetOverspeedCounter(ITracking trackingData) { if (trackingData == null) throw new NullReferenceException("ITracking is not initialize"); if (!trackingData.ContainsField(Easyconnect.MDI_OVERSPEED_COUNTER.Key)) return null; return trackingData.GetFieldAsInt(Easyconnect.MDI_OVERSPEED_COUNTER.Key); }
private void UpdateCache(TrackingData history, string field, ITracking data) { if (!history.fields.ContainsKey(field)) history.fields.Add(field, ((TrackingData)data).fields[field]); else history.fields[field] = ((TrackingData)data).fields[field]; }
public CalculatorController(ICalcLogging log, ITracking trk) { _log = log; _trk = trk; }