Пример #1
0
 public override void SolicitudEntregada(PDU rta, PDU source, Transaction tr, AbstractTransport t)
 {
     if (rta.CH == (byte)Decoder.ComandoH.LoginAcepted && LoginSuccess != null)
     {
         var la = rta as LoginAcepted;
         if (la == null)
         {
             throw new Exception("SA: fallo la especializacion del PDU");
         }
         LoginSuccess(this, la.IdAsignado);
     }
     else if (rta.CH == (byte)Decoder.ComandoH.LoginReject && LoginFail != null)
     {
         var lr = rta as LoginReject;
         if (lr == null)
         {
             throw new Exception("SA: fallo la especializacion del PDU");
         }
         LoginFail(this, lr.CL);
     }
     else if (rta.CH == (byte)Decoder.ComandoH.OKACK)
     {
         if (source.CH == (byte)Decoder.ComandoH.MsgPosicion && AutoReportSuccess != null)
         {
             var pos = source as Posicion;
             if (pos == null)
             {
                 throw new Exception("SA: fallo la especializacion del PDU");
             }
             AutoReportSuccess(this, pos.IdQueue);
         }
     }
 }
Пример #2
0
 public MRS(PDU _pdu, AbstractTransport t, TransactionUser ut)
     : base(t, ut)
 {
     pdu      = _pdu;
     Seq      = pdu.Seq;
     DeviceId = pdu.DeviceId;
 }
Пример #3
0
 public MRC(PDU _pdu, AbstractTransport t, TransactionUser ut)
     : base(t, ut)
 {
     pdu      = _pdu;
     Seq      = pdu.Seq;
     DeviceId = pdu.DeviceId;
     State    = States.INICIO;
 }
Пример #4
0
 public void SetCorrectTransportType(AbstractTransport transport)
 {
     switch (transport.TypeTransport)
     {
     case (TransportType.Car):
         this.transport = transport as Car;
         break;
     }
     deleteBtn.Visible = (this.transport.ID == 0) ? false : true;
 }
Пример #5
0
        public void KeepAlive(AbstractTransport t, Destination address)
        {
            T.TRACE(0, "Solicitando keep alive.");
            var pdu = new PDU
            {
                CH          = (byte)Decoder.ComandoH.KeepAlive,
                DeviceId    = IdDispositivo,
                Transport   = t,
                Destination = address,
            };
            var keep_alive_mrc = new MRC(pdu, pdu.Transport, this);

            pdu.Transport.NuevaTransaccion(keep_alive_mrc, pdu);
            keep_alive_mrc.Seq = pdu.Seq;
            keep_alive_mrc.Start();
        }
Пример #6
0
        public void AutoReport(AbstractTransport t, Destination address, List <GPSPoint> puntos, int idQueue)
        {
            var req = new Posicion
            {
                DeviceId    = IdDispositivo,
                IdQueue     = idQueue,
                Transport   = t,
                Destination = address
            };

            req.AddPoints(puntos);
            var mrc = new MRC(req, t, this);

            // Seq: automatico aqui.
            t.NuevaTransaccion(mrc, req);
            mrc.Start();
        }
Пример #7
0
        public void LoginRequest(AbstractTransport t, Destination address, string IMEI, string password, short tableversion, string firmware)
        {
            var req = new LoginRequest
            {
                DeviceId     = IdDispositivo,
                IMEI         = IMEI,
                Password     = password,
                Firmware     = firmware,
                TableVersion = tableversion,
                Destination  = address
            };
            var mrc = new MRC(req, t, this);

            // Seq, automatico aqui.
            t.NuevaTransaccion(mrc, req);
            mrc.Start();
        }
Пример #8
0
 public override void SolicitudNoEnviada(PDU pdu, Transaction tr, AbstractTransport t)
 {
     if (pdu.CH == (byte)Decoder.ComandoH.LoginRequest && LoginFail != null)
     {
         LoginFail(this, 0xFF);
     }
     else if (pdu.CH == (byte)Decoder.ComandoH.MsgPosicion && AutoReportFail != null)
     {
         var pos = pdu as Posicion;
         if (pos == null)
         {
             throw new Exception("SA: fallo la especializacion del PDU");
         }
         AutoReportFail(this, pos.IdQueue);
     }
     else if (pdu.CH == (byte)Decoder.ComandoH.KeepAlive)
     {
         GeneralFail(this);
     }
 }
Пример #9
0
 // MRS cuando nunca recibio el ACK.
 public abstract void RespuestaNoEntregada(PDU pdu, Transaction tr, AbstractTransport t);
Пример #10
0
 // MRS si la solicitud requiere RTA
 public abstract PDU RequieroRespuesta(PDU pdu, Transaction tr, AbstractTransport t);
Пример #11
0
 public Email(AbstractTransport transport, EmailContentType type = EmailContentType.Text)
 {
     Transport = transport;
     Type      = type;
 }
Пример #12
0
 public override PDU RequieroACK(PDU pdu, Transaction tr, AbstractTransport t)
 {
     throw new NotImplementedException();
 }
Пример #13
0
 public void AddTransport(AbstractTransport transport)
 {
     MyTransports.Add(transport);
 }
Пример #14
0
 // MRC cuando obtiene un ACK de un msg sin RTA.
 public abstract void SolicitudEntregada(PDU response, PDU pdu, Transaction tr, AbstractTransport t);
Пример #15
0
 protected Transaction(AbstractTransport t, TransactionUser ut)
 {
     Transport       = t;
     TransactionUser = ut;
     State           = States.INICIO;
 }
Пример #16
0
 // MRC cuando llega una RTA a una solicitud enviada.
 public abstract PDU RequieroACK(PDU pdu, Transaction tr, AbstractTransport t);
Пример #17
0
 // MRC cuando no obtiene ni RTA ni ACK.
 public abstract void SolicitudNoEnviada(PDU pdu, Transaction tr, AbstractTransport t);
Пример #18
0
 public override bool NuevaSolicitud(PDU pdu, Transaction tr, AbstractTransport t)
 {
     // si llega hasta aqui, no se pudo procesar el mensaje.
     tr.ResponseCL = 0x01; // codigo interino de MensajeDesconocido.
     return(false);
 }
Пример #19
0
 // MRS cuando llega una nueva solicitud, siempre.
 public abstract bool NuevaSolicitud(PDU pdu, Transaction tr, AbstractTransport t);
Пример #20
0
 public override void RespuestaNoEntregada(PDU pdu, Transaction tr, AbstractTransport t)
 {
     throw new NotImplementedException();
 }