From 64ec2faeb3aa181f71cff0e99f052e8fc5170df4 Mon Sep 17 00:00:00 2001 From: DerekGn Date: Mon, 25 Jan 2021 16:08:36 +0000 Subject: [PATCH] updated transmit method --- RfmOTA/RfmOTA/Ota/OtaService.cs | 2 +- RfmOta/RfmOta/Rfm/IRfmUsb.cs | 2 +- RfmOta/RfmOta/Rfm/RfmUsb.cs | 24 ++++++++++++++++++++++-- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/RfmOTA/RfmOTA/Ota/OtaService.cs b/RfmOTA/RfmOTA/Ota/OtaService.cs index 36cf614..12d7a6e 100644 --- a/RfmOTA/RfmOTA/Ota/OtaService.cs +++ b/RfmOTA/RfmOTA/Ota/OtaService.cs @@ -300,7 +300,7 @@ private void SendRequest(IList request, [CallerMemberName] string memberNa { sw.Start(); - _rfmUsb.Transmit(request, 1000); + _rfmUsb.Transmit(request); } finally { diff --git a/RfmOta/RfmOta/Rfm/IRfmUsb.cs b/RfmOta/RfmOta/Rfm/IRfmUsb.cs index 3957816..ee74f81 100644 --- a/RfmOta/RfmOta/Rfm/IRfmUsb.cs +++ b/RfmOta/RfmOta/Rfm/IRfmUsb.cs @@ -56,7 +56,7 @@ internal interface IRfmUsb : IDisposable /// /// The data to transmit /// The timeout in milliseconds to wait for a response - void Transmit(IList data, int timeout); + void Transmit(IList data); void SetDioMapping(Dio dio, DioMapping mapping); } } diff --git a/RfmOta/RfmOta/Rfm/RfmUsb.cs b/RfmOta/RfmOta/Rfm/RfmUsb.cs index 1915837..bb75ebd 100644 --- a/RfmOta/RfmOta/Rfm/RfmUsb.cs +++ b/RfmOta/RfmOta/Rfm/RfmUsb.cs @@ -179,9 +179,29 @@ public IList TransmitReceive(IList data, int timeout) } while (true); } /// - public void Transmit(IList data, int timeout) + public void Transmit(IList data) { - SendCommand($"e-tx {BitConverter.ToString(data.ToArray()).Replace("-", string.Empty)} {timeout}"); + int retries = RetryCount; + + do + { + var response = SendCommand($"e-tx {BitConverter.ToString(data.ToArray()).Replace("-", string.Empty)}"); + + if (response.Contains("TX") || response.Contains("RX")) + { + if (retries == 0) + { + throw new RfmUsbTransmitException($"Packet transmission failed: [{response}]"); + } + + retries--; + } + else + { + break; + } + + } while (true); } /// public void SetDioMapping(Dio dio, DioMapping mapping)