public PayloadProcessorBase(IRadioObject payload, IEnvironment env, ILog log, IEnumerable <MototrboRadio> radios, ITransmitter transmitter, IUIDispatcher uiDispatcher) { _env = env; _log = log; _radios = radios; _transmitter = transmitter; _uiDispatcher = uiDispatcher; rxObject = payload; _radio = GetRadio(payload.Ip); }
// When inheriting, create a custom Add to be used by the constructor, add your own events and associated objects // to the item then call base.Add(item) to finish. public virtual void Add(IRadioObject item) { item.Clicked += OnItemClicked; item.RadioGroupID = internalList.Count; internalList.Add(item); }
public void OnItemClicked(IRadioObject sender, EventArgs e) { SelectedID = sender.RadioGroupID; }
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); }); } }; }
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); }); } } }; }
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); }); } }; }