Пример #1
0
        private bool IsInvalidMessage(string code, IGeoPoint message)
        {
            var discardReason = DiscardReason.None;

            if (Coche == null && !MessageIdentifierX.IsEntityMessage(code))
            {
                discardReason = DiscardReason.NoAssignedMobile;
            }
            else if (message.GeoPoint != null && FechaInvalida(message.GeoPoint.Date, DeviceParameters))
            {
                discardReason = DiscardReason.InvalidDate;
            }
            else if (message.GeoPoint != null && FueraDelGlobo(message.GeoPoint))
            {
                discardReason = DiscardReason.OutOfGlobe;
            }
            else if (IsVelocidadInvalida(message))
            {
                discardReason = DiscardReason.InvalidSpeed;
            }

            if (discardReason.Equals(DiscardReason.None))
            {
                return(false);
            }

            DiscardEvent(code, message, discardReason);

            return(true);
        }
Пример #2
0
        protected override HandleResults OnDeviceHandleMessage(Event message)
        {
            //STrace.Debug(typeof(Events).FullName, message.DeviceId, "OnDeviceHandleMessage (EventsHandler)");

            AdjustRfidData(message);
            var code = GetGenericEventCode(message);

            STrace.Debug(typeof(Events).FullName, message.DeviceId, String.Format("code:{0} Subcode:{1}", code, message.GetData()));

            #region protect garmin on/off messages from be banned because of invalid date

            if ((code == MessageCode.GarminOn.GetMessageCode() || code == MessageCode.GarminOff.GetMessageCode()) && message.GeoPoint != null && FechaInvalida(message.GeoPoint.Date, DeviceParameters))
            {
                message.GeoPoint.Date = DateTime.UtcNow;
            }

            #endregion protect garmin on/off messages from be banned because of invalid date

            //if (IsGarbageMessage(code))
            //{
            //    return HandleResults.BreakSuccess;
            //}

            if (IsInvalidMessage(code, message))
            {
                return(HandleResults.BreakSuccess);
            }

            ExtraText = new ExtraText(DaoFactory);

            if (MessageIdentifierX.IsEntityMessage(code))
            {
                ProcessEntityEvent(message, code);
            }
            else if (Coche != null)
            {
                var estado = GeocercaManager.CalcularEstadoVehiculo(Coche, message.GeoPoint, DaoFactory);
                ZonaManejo = estado != null && estado.ZonaManejo != null && estado.ZonaManejo.ZonaManejo > 0
                    ? DaoFactory.ZonaDAO.FindById(estado.ZonaManejo.ZonaManejo) : null;
                ProcessEvent(code, message);
                ProcessPosition(message);
            }

            return(HandleResults.Success);
        }