private static bool UrbetrackUT_AutoReport(object sender, Posicion pos) { var d = Devices.I().FindById(pos.IdDispositivo); if (d == null) { return(false); } if (DataTransportLayer.IsRetransmission(d.Id, pos.Seq)) { return(false); } // decoro la zona de las GeoPoints. foreach (var point in pos.Puntos) { if (d.Type == DeviceTypes.Types.URBMOBILE_v0_1) { point.Date = point.Date.AddHours(3); } DecorateFixWithZone(point); } Dispatcher.Dispatch(pos.Puntos.ToPosition(d.Id, pos.Seq)); return(true); }
private void ProcessChoferState(GPSPoint pos, DateTime date, uint msgId, String chofer, int state) { if ((chofer == "0000000000") || (chofer == "000000FFFF")) { return; } var ev = MessageIdentifierX.FactoryRfid(Id, msgId, pos, date, chofer, state); DataTransportLayer.DispatchMessage(this, ev); }
private static bool UrbetrackUT_RFIDDetected(object sender, RFIDDetectado pdu) { var d = Devices.I().FindById(pdu.IdDispositivo); if (d == null) { return(false); } if (DataTransportLayer.IsRetransmission(d.Id, pdu.Seq)) { return(false); } DecorateFixWithZone(pdu.Posicion); var msg = MessageIdentifierX.FactoryRfid(d.Id, pdu.Seq, pdu.Posicion, pdu.Posicion.GetDate(), pdu.IdTarjeta, pdu.Status); Dispatcher.Dispatch(msg); return(true); }
private static bool UrbetrackUT_Evento(object sender, Evento pdu) { var d = Devices.I().FindById(pdu.IdDispositivo); if (d == null) { return(false); } if (DataTransportLayer.IsRetransmission(d.Id, pdu.Seq)) { return(false); } DecorateFixWithZone(pdu.Posicion); var data = pdu.Datos; var extra = pdu.Extra; var codigo = (MessageIdentifier)pdu.CodigoEvento; if (((pdu.CodigoEvento > 0xD0 && pdu.CodigoEvento < 0xD6) || pdu.CodigoEvento == 85)) { codigo = MessageIdentifier.GenericMessage; } var msg = codigo.FactoryEvent(d.Id, pdu.Seq, pdu.Posicion, pdu.Posicion.GetDate(), pdu.RiderIdentifier, new List <int>(2) { data, extra }); msg.Payload = pdu.Payload; msg.PayloadSize = pdu.PayloadSize; Dispatcher.Dispatch(msg); return(true); }
private static bool UrbetrackUT_ExcesoVelocidad(object sender, ExcesoVelocidad pdu) { var d = Devices.I().FindById(pdu.IdDispositivo); if (d == null) { return(false); } // si alguna posicion DEL TICKET esta mocha... if (pdu.PosicionDeTicket == null || pdu.PosicionDeTicket.Lat == 0 || pdu.PosicionFinal == null || pdu.PosicionFinal.Lat == 0) { STrace.Debug(typeof(UrbetrackUT).FullName, d.Id, String.Format("CrapReceivedCounter -> Device[{0}]: TICKET[VELOCIDAD EXCEDIDA]/MALFORMACION DE DATOS", d.LogId)); return(true); } #region HACK FIX PARA LA VERSION 99 DEL FIRMWARE if (d.HackVersion99()) { if (pdu.PosicionDeAviso != null && pdu.PosicionDeAviso.Lat != 0) { var diferencia = pdu.PosicionDeTicket.Date - pdu.PosicionDeAviso.Date; STrace.Debug(typeof(UrbetrackUT).FullName, d.Id, String.Format("TICKET[VELOCIDAD EXCEDIDA/DEVICE={0}]: DIFERENCIA CALCULADA {1}", d.LogId, diferencia)); if (diferencia.TotalSeconds > 21) { if (QuadTree.QuadTree.i() == null) { return(false); } // esto me indica que aplico el b-u-g var claseAviso = QuadTree.QuadTree.i().GetPositionClass(pdu.PosicionDeAviso.Lat, pdu.PosicionDeAviso.Lon); var claseTicket = QuadTree.QuadTree.i().GetPositionClass(pdu.PosicionDeTicket.Lat, pdu.PosicionDeTicket.Lon); if (claseAviso == -1 || claseTicket == -1) { return(false); } if (claseAviso == claseTicket) { return(true); } STrace.Debug(typeof(UrbetrackUT).FullName, d.Id, String.Format("TICKET[VELOCIDAD EXCEDIDA/DEVICE={0}/RIDER={1}]: REPARANDO EVENTO MALFORMADO X BUG v99", d.LogId, pdu.RiderIdentifier)); pdu.PosicionDeAviso = null; } } if (pdu.PosicionDeAviso != null && pdu.PosicionDeAviso.Lat != 0) { var duracion = pdu.PosicionFinal.Date.Subtract(pdu.PosicionDeAviso.Date).TotalSeconds; if (duracion < 21) { return(true); } } } #endregion DecorateFixWithZone(pdu.PosicionDeTicket); DecorateFixWithZone(pdu.PosicionDeTicket); DecorateFixWithZone(pdu.PosicionFinal); if (DataTransportLayer.IsRetransmission(d.Id, pdu.Seq)) { return(false); } var msg = new SpeedingTicket(d.Id, pdu.Seq) { StartPoint = pdu.PosicionDeAviso, UserIdentifier = pdu.RiderIdentifier, TicketPoint = pdu.PosicionDeTicket, EndPoint = pdu.PosicionFinal, SpeedReached = Speed.KnotToKm(pdu.VelocidadMaximaAlcanzada), SpeedLimit = Speed.KnotToKm(pdu.VelocidadMaximaPermitida), Tiempo = (pdu.PosicionDeAviso ?? pdu.PosicionDeTicket).GetDate(), }; Dispatcher.Dispatch(msg); return(true); }