//private object locker = new object(); public UCMainViewModel() { //lock (locker) { _uiContext = System.Threading.SynchronizationContext.Current; Load(); SipAgentInitAndStart(); SnmpAgentInitAndStart(); Title = String.Format("Simulador de Equipos Radio Voip. Nucleo 2018. [{0}:{1}]", Config.VoipAgentIP, Config.VoipAgentPort); Btn01Text = "Config"; Btn02Text = "Salir"; ForceSquelchCmd = new DelegateCommandBase((obj) => { if (obj is SimulatedRadioEquipment) { var ses = (obj as SimulatedRadioEquipment); if (ses.Habilitado == true && ses.IsTx == false) { ses.AircrafSquelch = !ses.AircrafSquelch; if (ses.CallId != -1) { if (LocalAudioPlayer != -1 && !ses.ScvSquelch) { if (ses.AircrafSquelch) { SipAgent.MixerLink(LocalAudioPlayer, ses.CallId); } else if (!ses.AircrafSquelch) { SipAgent.MixerUnlink(LocalAudioPlayer, ses.CallId); } } SipAgent.SquelchSet(ses.CallId, ses.Squelch); } } } if (obj is SimulatedFrequecy) { var frequency = obj as SimulatedFrequecy; //var receivers = frequency.Equipments.Where(eq => eq.Habilitado == true && eq.IsTx == false).ToList(); var receivers = AllEquipments.Where(eq => eq.FreqObject == frequency && eq.Habilitado == true && eq.IsTx == false).ToList(); receivers.ForEach(receiver => { receiver.AircrafSquelch = !receiver.AircrafSquelch; if (receiver.CallId != -1) { if (LocalAudioPlayer != -1 && !receiver.ScvSquelch) { if (receiver.AircrafSquelch) { SipAgent.MixerLink(LocalAudioPlayer, receiver.CallId); } else if (!receiver.AircrafSquelch) { SipAgent.MixerUnlink(LocalAudioPlayer, receiver.CallId); } } SipAgent.SquelchSet(receiver.CallId, receiver.Squelch); } }); frequency.AircrafSquelch = !frequency.AircrafSquelch; } }); EnableDisableCmd = new DelegateCommandBase((obj) => { if (obj is SimulatedRadioEquipment) { var ses = (obj as SimulatedRadioEquipment); if (ses.CallId != -1) { SipAgent.HangupCall(ses.CallId, SipAgentNet.SIP_OK); ses.Reset(); } ses.Habilitado = !ses.Habilitado; } }); } }