/// <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));
 }
Ejemplo n.º 15
0
 /// <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));
 }
Ejemplo n.º 16
0
 /// <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);
         }
     }
 }
Ejemplo n.º 21
0
 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);
 }
Ejemplo n.º 23
0
        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;
        }
Ejemplo n.º 24
0
 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;
        }
        /// <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);
            }
        }
Ejemplo n.º 33
0
 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];
 }
Ejemplo n.º 37
0
 public CalculatorController(ICalcLogging log, ITracking trk)
 {
     _log = log;
     _trk = trk;
 }