Exemplo n.º 1
0
        public SmsProcessor(IRadioObject payload, IEnvironment env, ILog log, IEnumerable <MototrboRadio> radios, ITransmitter transmitter, IUIDispatcher uiDispatcher)
            : base(payload, env, log, radios, transmitter, uiDispatcher)
        {
            _action = () =>
            {
                string   radioIp     = payload.Ip;
                DateTime currentDate = DateTime.Now;

                if (_radio != null)
                {
                    byte[] Data = payload.Buffer;

                    UIObject toFrontEnd = new UIObject();

                    if (Data[2] == 191)
                    {
                        _radio.IsInsmsSending = false;
                        RemoveTxData(_env.PortSms);
                    }
                    if (Data[2] != 191)
                    {
                        //Sms acknowloedge
                        _transmitter.Add(SMSAcknowledge());
                        //

                        byte[] textB = Data.Skip(10 + Data[3]).ToArray();

                        string Text = System.Text.Encoding.Unicode.GetString(textB);

                        SmsDataTable dataTable = new SmsDataTable()
                        {
                            de     = _radio.radio_id.ToString(),
                            evento = 9,
                            fecha  = DateTime.Now,
                            para   = _radio.despacho,
                            sms    = Text,
                            sms_id = -1
                        };

                        _radio.message = Text;

                        _radio.dates[3].date = DateTime.Now;

                        toFrontEnd.MethodName = "smsIn";

                        toFrontEnd.Radio = _radio;

                        _uiDispatcher.Add(toFrontEnd);

                        Task.Run(() =>
                        {
                            RadiosDomain.Save(_radio);
                        });

                        Task.Run(() =>
                        {
                            SmsInDataDomain.Save(dataTable);
                        });
                    }
                }
            };
        }
Exemplo n.º 2
0
        public GpsProcessor(IRadioObject payload, IEnvironment env, ILog log, IEnumerable <MototrboRadio> radios, ITransmitter transmitter, IUIDispatcher uiDispatcher)
            : base(payload, env, log, radios, transmitter, uiDispatcher)
        {
            _action = () =>
            {
                string radioIp = payload.Ip;

                int  DatumIndexStart = 9;
                bool HasGpsData      = false;

                if (_radio != null)
                {
                    byte[]   Data       = payload.Buffer;
                    UIObject toFrontEnd = new UIObject();

                    _radio.emerg_on = false;

                    if (!_radio.IsOn)
                    {
                        _radio.IsOn     = true;
                        _radio.IsOff    = false;
                        _radio.IsUnknow = false;
                    }

                    //Localizacion instantanea correcta

                    if (Data[0] == 7 & !(Data[1] == 0xc))
                    {
                        HasGpsData      = true;
                        _radio.evento   = 6;
                        DatumIndexStart = 15;

                        RemoveTxData(_env.PortGps, new byte[] { 0x05, 0x08, 0x22, 0x04, 0x24, 0x68, 0xAC, 0xE0, 0x51, 0x62 });
                    }

                    //GPS instantaneo respuesta acknowledge.
                    if (Data[0] == 0xb)
                    {
                        _radio.IsInIntervalLocationSending = false;

                        RemoveTxData(_env.PortGps, new byte[] { 0x05, 0x08, 0x22, 0x04, 0x24, 0x68, 0xAC, 0xE0, 0x51, 0x62 });
                    }

                    //GPS localizacion intervalo correcta
                    if (Data[0] == 0xd & !(Data[1] == 0xc))
                    {
                        if (string.IsNullOrEmpty(_radio.latitud))
                        {
                            RemoveTxData(_env.PortGps, DataToSend.GPS_INTERVAL_ON);
                        }

                        _radio.evento = 7;
                        HasGpsData    = true;
                    }

                    //GPS localizacion intervalo stop
                    if (Data[0] == 0xb && Data[1] == 0x07)
                    {
                        RemoveTxData(_env.PortGps, DataToSend.GPS_INTERVAL_OFF);
                    }

                    if ((Data[0] == 0xb & Data[7] == 0xe1))
                    {
                        _radio.IsInEmergencySending = false;
                        RemoveTxData(_env.PortGps, DataToSend.EMERGENCY_ON);
                    }

                    if ((Data[0] == 0xd & Data[7] == 0xe1))
                    {
                        _transmitter.Add(GPSEmergencyEnabledRequest());

                        _radio.latitud       = "0";
                        _radio.longitud      = "0";
                        _radio.velocidad     = "0";
                        _radio.dates[2].date = DateTime.Now;
                        _radio.emerg_on      = true;
                        _radio.evento        = 8;
                        if (!(Data[8] == 0x37 || Data[8] == 0x38))
                        {
                            HasGpsData = true;
                        }

                        toFrontEnd.MethodName = "emergency";
                    }

                    if (HasGpsData)
                    {
                        _radio.IsInInstantLocationSending = false;
                        //List<double> GpsDatum = ResolveDatum(DatumIndexStart, DatumIndexStart + 4, Data);
                        Helpers.GpsDatum Datum = new Helpers.GpsDatum(DatumIndexStart, DatumIndexStart + 4, Data);

                        _radio.latitud   = Datum.latitude.ToString().Replace(",", ".");
                        _radio.longitud  = Datum.longitude.ToString().Replace(",", ".");
                        _radio.velocidad = Datum.speed.ToString().Replace(",", ".");

                        _radio.hasGpsPosition = true;

                        _radio.dates[2].date = DateTime.Now;

                        if (!_radio.emerg_on)
                        {
                            toFrontEnd.MethodName = "gpsData";
                        }
                    }

                    toFrontEnd.Radio = _radio;

                    _uiDispatcher.Add(toFrontEnd);

                    Task.Run(() =>
                    {
                        GpsDataDomain.Save(_radio);
                    });

                    Task.Run(() =>
                    {
                        RadiosDomain.Save(_radio);
                    });
                }
            };
        }
Exemplo n.º 3
0
        public ArsProcessor(IRadioObject payload, IEnvironment env, ILog log, IEnumerable <MototrboRadio> radios, ITransmitter transmitter, IUIDispatcher uiDispatcher)
            : base(payload, env, log, radios, transmitter, uiDispatcher)
        {
            _action = () =>
            {
                string radioIp = payload.Ip;

                if (_radio != null)
                {
                    var data        = payload.Buffer;
                    var currentDate = DateTime.Now;

                    UIObject toFrontEnd = new UIObject();

                    int PayloadDecimal = 0;
                    if (data.Length > 3)
                    {
                        int a = data[2];
                        int b = data[3];
                        PayloadDecimal = a + b;
                    }
                    else
                    {
                        int a = data[1];
                        int b = data[2];
                        PayloadDecimal = a + b;
                    }

                    _radio.IsOn     = true;
                    _radio.IsOff    = false;
                    _radio.IsUnknow = false;

                    switch (PayloadDecimal)
                    {
                    case 272:
                        //eventoARS.EstadoARS = 1 'RADIO ON
                        _radio.evento         = 1;
                        _radio.dates[0].date  = currentDate;
                        toFrontEnd.MethodName = "arsOn";
                        //Ars Acknowledge transmit
                        _transmitter.Add(ARSAcknowledge());
                        if (_radio.gps_on)
                        {
                            //Gps Interval enabling
                            _transmitter.Add(GPSIntervalRequest());
                            //Emergency enabling
                            _transmitter.Add(GPSEmergencyEnabledRequest());
                        }

                        break;

                    case 64:
                        //eventoARS.EstadoARS = 2 'RADIO UPDATE
                        RemoveTxData(_env.PortArs);

                        //Gps Interval enabling
                        if (_radio.gps_on)
                        {
                            //Gps Interval enabling
                            _transmitter.Add(GPSIntervalRequest());
                            //Emergency enabling
                            _transmitter.Add(GPSEmergencyEnabledRequest());
                        }
                        _radio.dates[0].date  = currentDate;
                        toFrontEnd.MethodName = "arsOn";
                        _radio.evento         = 3;
                        break;

                    case 304:
                        //eventoARS.EstadoARS = 2 'RADIO UPDATE
                        RemoveTxData(_env.PortArs);
                        _radio.dates[0].date  = currentDate;
                        toFrontEnd.MethodName = "arsOn";
                        _radio.evento         = 3;
                        break;

                    case 50:
                    case 81:
                        //eventoARS.EstadoARS = 3 'RADIO OFF
                        RemoveTxData(_env.PortArs);
                        _radio.IsOn           = false;
                        _radio.IsOff          = true;
                        _radio.hasGpsPosition = false;
                        _radio.dates[1].date  = currentDate;
                        toFrontEnd.MethodName = "arsOff";
                        _radio.evento         = 2;
                        break;
                    }

                    toFrontEnd.Id    = payload.Id;
                    toFrontEnd.Radio = _radio;

                    _uiDispatcher.Add(toFrontEnd);

                    Task.Run(() =>
                    {
                        RadiosDomain.Save(_radio);
                    });

                    Task.Run(() =>
                    {
                        ArsDataDomain.Save(_radio);
                    });
                }
            };
        }