/// <summary> /// Creates an instance of the required MicrowaveReceiver class /// </summary> /// <param name="config">the configuration info for the receiver</param> /// <returns>a microwave receiver class instance</returns> /// <exception cref="System.Exception">Thrown if config.ReceiverType is unrecognized</exception> private static MicrowaveReceiver CreateInstance(MicrowaveControlInfo config) { switch (config.ReceiverType) { case MicrowaveReceiverType.PMR_AR100: return(new PMR_AR100(config.TCPAddress, config.TCPPort, config.UsesTCP, config.ComPort, config.BaudRate)); case MicrowaveReceiverType.Vislink_HDR1000: return(new Vislink_HDR1000(config.TCPAddress, config.TCPPort, config.UsesTCP, config.ComPort, config.BaudRate, config.BlockDownConverterFrequency)); case MicrowaveReceiverType.Test: return(new TestReciever(config.TCPAddress, config.TCPPort, config.UsesTCP, config.ComPort, config.BaudRate)); default: throw new Exception("Unsupported Microwave Receiver type"); } }
/// <summary> /// Opens the microwave control service /// </summary> /// <param name="sourceName">source name to open</param> public void Open(ClientConnectRequest request) { try { this.clientRequest = request; AppLogger.Message(request.UserName + " MicrowaveControlService.Open " + request.SourceName); if (!ResourceManager.Acquire <ResourceManager.MutexRule>(request.SourceName, typeof(MicrowaveControlService), request.UserName)) { string owner = ResourceManager.GetOwner(request.SourceName, typeof(MicrowaveControlService)); throw new SourceHasMaxClientsException("The microwave receiver is in use by " + ((owner == null) ? "<unknown>" : owner) + "."); } resourceAcquired = true; StreamSourceInfo sourceConfig = StreamSources.LoadFromFile().FindSource(request.SourceName); if (sourceConfig.MicrowaveControl == null) { throw new SourceConfigException("Source does not have MicrowaveControl section defined!"); } microwaveConfig = sourceConfig.MicrowaveControl; //get client callback clientCallback = OperationContext.Current.GetCallbackChannel <IMicrowaveControl2Callback>(); //create microwave receiver instance microwaveReceiver = MicrowaveControlService2.CreateInstance(microwaveConfig); if (!microwaveReceiver.Connected) { throw new SourceConfigException("Communication with the microwave receiver could not be established."); } microwaveReceiver.ReceiverTuningChange += new EventHandler <MicrowaveReceiver.ReceiverEventArgs>(microwaveReceiver_ReceiverTuningChange); microwaveReceiver.ReceiverLinkQualityChange += new EventHandler <MicrowaveReceiver.ReceiverEventArgs>(microwaveReceiver_ReceiverLinkQualityChange); microwaveReceiver.ReceiverConnectionChange += new EventHandler(microwaveReceiver_ReceiverConnectionChange); scanner = new PeakScan(microwaveReceiver); scanner.ScanCompleted += new EventHandler <ScanCompleteEvent>(scanner_ScanCompleted); //load cached presets LoadSavedPresets(); microwaveReceiver.StartPollingLinkQuality(); } catch (Exception exc) { AppLogger.Dump(exc); throw; } }
/// <summary> /// Creates an instance of the required MicrowaveReceiver class /// </summary> /// <param name="config">the configuration info for the receiver</param> /// <returns>a microwave receiver class instance</returns> /// <exception cref="System.Exception">Thrown if config.ReceiverType is unrecognized</exception> private static MicrowaveReceiver CreateInstance(MicrowaveControlInfo config) { switch (config.ReceiverType) { case MicrowaveReceiverType.PMR_AR100: return(new PMR_AR100(config.TCPAddress, config.TCPPort, config.UsesTCP, config.ComPort, config.BaudRate)); default: throw new Exception("Unsupported Microwave Receiver type"); } }