/// <summary> /// Backgroundworker replacement /// </summary> /// <returns></returns> public void DoReceptionCondWorkAsync(ReceptorAddress ra) { //New token _condTestCancellationToken = new CancellationTokenSource(); if (_deviceManager.IsTransceiverConnected) { _deviceManager.Transceiver.FrameAckKoEvent += Transceiver_FrameAckKoEvent; _deviceManager.Transceiver.FrameAckOkEvent += Transceiver_FrameAckOkEvent; _deviceManager.Transceiver.FrameTimeOutEvent += Transceiver_FrameTimeOutEvent; } else { _condTestCancellationToken.Cancel(); } Task.Run(() => { if (_deviceManager.IsTransceiverConnected) { Task conductivityTask = _deviceManager.Transceiver.SendConductivityFrame(_address, ra.Channel.ToString(), DEFAULT_COND_FRAME_TOTAL_TIMEOUT); conductivityTask.Wait(); } }).ContinueWith(t => { _isPingCondRunning = false; if (_deviceManager.IsTransceiverConnected) { _deviceManager.Transceiver.FrameAckKoEvent -= Transceiver_FrameAckKoEvent; _deviceManager.Transceiver.FrameAckOkEvent -= Transceiver_FrameAckOkEvent; _deviceManager.Transceiver.FrameTimeOutEvent -= Transceiver_FrameTimeOutEvent; } }).ConfigureAwait(false); }
/// <summary> /// Get resiste of receptor address /// </summary> /// <param name="ra"></param> public void TestConductivite(ReceptorAddress ra) { _receptorAddressTested = ra; _isPingCondRunning = true; DoReceptionCondWorkAsync(ra); }
public ReceptorAddress GetAddress(int channel) { ReceptorAddress receptorAddress = (from ra in _receptorAddresses where ra.Channel == channel select ra).FirstOrDefault(); if (receptorAddress == null) { throw new CannotFindReceptorAddressException(string.Format("Cannot find address {0} on receptor with mac address {1}", channel.ToString(), _address)); } return(receptorAddress); }