Added and error message to the trace log when the com port is failing and looping back data

This commit is contained in:
2020-05-23 18:40:04 +01:00
parent 07665b7617
commit b9522ae2a2
7 changed files with 27 additions and 21 deletions
@@ -181,7 +181,7 @@ namespace Meade.net.Focuser.UnitTests
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(firmware); _sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(firmware);
_focuser.Connected = true; _focuser.Connected = true;
_sharedResourcesWrapperMock.Verify(x => x.Connect("Serial", It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect("Serial", It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
} }
@@ -189,20 +189,20 @@ namespace Meade.net.Focuser.UnitTests
public void Connected_Set_SettingTrueWhenTrue_ThenDoesNothing() public void Connected_Set_SettingTrueWhenTrue_ThenDoesNothing()
{ {
ConnectFocuser(); ConnectFocuser();
_sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
//act //act
_focuser.Connected = true; _focuser.Connected = true;
//assert //assert
_sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
} }
[Test] [Test]
public void Connected_Set_SettingFalseWhenTrue_ThenDisconnects() public void Connected_Set_SettingFalseWhenTrue_ThenDisconnects()
{ {
ConnectFocuser(); ConnectFocuser();
_sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
//act //act
_focuser.Connected = false; _focuser.Connected = false;
@@ -56,7 +56,7 @@ namespace Meade.net.Telescope.UnitTests
SameDevice = 1 SameDevice = 1
}; };
_sharedResourcesWrapperMock.Setup(x => x.Connect("Serial", It.IsAny<string>())).Returns( () => _connectionInfo ); _sharedResourcesWrapperMock.Setup(x => x.Connect("Serial", It.IsAny<string>(), It.IsAny<ITraceLogger>())).Returns( () => _connectionInfo );
_sharedResourcesWrapperMock.Setup(x => x.ReadProfile()).Returns(_profileProperties); _sharedResourcesWrapperMock.Setup(x => x.ReadProfile()).Returns(_profileProperties);
@@ -384,7 +384,7 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(firmware); _sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(firmware);
_telescope.Connected = true; _telescope.Connected = true;
_sharedResourcesWrapperMock.Verify( x => x.Connect("Serial", It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify( x => x.Connect("Serial", It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendString("#:GZ#"), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.SendString("#:GZ#"), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($"#:Rg{_profileProperties.GuideRateArcSecondsPerSecond:00.0}#"),Times.Once); _sharedResourcesWrapperMock.Verify(x => x.SendBlind($"#:Rg{_profileProperties.GuideRateArcSecondsPerSecond:00.0}#"),Times.Once);
@@ -400,7 +400,7 @@ namespace Meade.net.Telescope.UnitTests
_sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(firmware); _sharedResourcesWrapperMock.Setup(x => x.FirmwareVersion).Returns(firmware);
_telescope.Connected = true; _telescope.Connected = true;
_sharedResourcesWrapperMock.Verify(x => x.Connect("Serial", It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect("Serial", It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
_sharedResourcesWrapperMock.Verify(x => x.SendString("#:GZ#"), Times.Never); _sharedResourcesWrapperMock.Verify(x => x.SendString("#:GZ#"), Times.Never);
_sharedResourcesWrapperMock.Verify(x => x.SendBlind($"#:Rg{_profileProperties.GuideRateArcSecondsPerSecond:00.0}#"), Times.Never); _sharedResourcesWrapperMock.Verify(x => x.SendBlind($"#:Rg{_profileProperties.GuideRateArcSecondsPerSecond:00.0}#"), Times.Never);
} }
@@ -410,20 +410,20 @@ namespace Meade.net.Telescope.UnitTests
public void Connected_Set_SettingTrueWhenTrue_ThenDoesNothing() public void Connected_Set_SettingTrueWhenTrue_ThenDoesNothing()
{ {
ConnectTelescope(); ConnectTelescope();
_sharedResourcesWrapperMock.Verify( x => x.Connect(It.IsAny<string>(), It.IsAny<string>()),Times.Once); _sharedResourcesWrapperMock.Verify( x => x.Connect(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ITraceLogger>()),Times.Once);
//act //act
_telescope.Connected = true; _telescope.Connected = true;
//assert //assert
_sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
} }
[Test] [Test]
public void Connected_Set_SettingFalseWhenTrue_ThenDisconnects() public void Connected_Set_SettingFalseWhenTrue_ThenDisconnects()
{ {
ConnectTelescope(); ConnectTelescope();
_sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>()), Times.Once); _sharedResourcesWrapperMock.Verify(x => x.Connect(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<ITraceLogger>()), Times.Once);
//act //act
_telescope.Connected = false; _telescope.Connected = false;
+1 -1
View File
@@ -406,7 +406,7 @@ namespace ASCOM.Meade.net
ReadProfile(); ReadProfile();
LogMessage("Connected Set", "Connecting to port {0}", _comPort); LogMessage("Connected Set", "Connecting to port {0}", _comPort);
var connectionInfo = _sharedResourcesWrapper.Connect("Serial", DriverId); var connectionInfo = _sharedResourcesWrapper.Connect("Serial", DriverId, _tl);
try try
{ {
LogMessage("Connected Set", $"Connected to port {_comPort}. Product: {_sharedResourcesWrapper.ProductName} Version:{_sharedResourcesWrapper.FirmwareVersion}"); LogMessage("Connected Set", $"Connected to port {_comPort}. Product: {_sharedResourcesWrapper.ProductName} Version:{_sharedResourcesWrapper.FirmwareVersion}");
@@ -13,6 +13,7 @@ namespace Meade.net.UnitTests
public class SharedResourcesUnitTests public class SharedResourcesUnitTests
{ {
private Mock<ISerial> _serialMock; private Mock<ISerial> _serialMock;
private Mock<ITraceLogger> _traceLoggerMock;
[SetUp] [SetUp]
public void Setup() public void Setup()
@@ -20,6 +21,8 @@ namespace Meade.net.UnitTests
_serialMock = new Mock<ISerial>(); _serialMock = new Mock<ISerial>();
_serialMock.SetupAllProperties(); _serialMock.SetupAllProperties();
_traceLoggerMock = new Mock<ITraceLogger>();
SharedResources.SharedSerial = _serialMock.Object; SharedResources.SharedSerial = _serialMock.Object;
} }
@@ -174,7 +177,7 @@ namespace Meade.net.UnitTests
[TestCase("Carrier Pigeon")] [TestCase("Carrier Pigeon")]
public void Connect_WhenDeviceIdIsNotSerial_ThenThrowsException( string deviceId) public void Connect_WhenDeviceIdIsNotSerial_ThenThrowsException( string deviceId)
{ {
var result = Assert.Throws<ArgumentException>( () => { SharedResources.Connect(deviceId, string.Empty); } ); var result = Assert.Throws<ArgumentException>( () => { SharedResources.Connect(deviceId, string.Empty, _traceLoggerMock.Object); } );
Assert.That( result.Message, Is.EqualTo($"deviceId {deviceId} not currently supported") ); Assert.That( result.Message, Is.EqualTo($"deviceId {deviceId} not currently supported") );
} }
@@ -214,7 +217,7 @@ namespace Meade.net.UnitTests
_serialMock.Setup(x => x.Transmit(":GVP#")).Callback(() => { serialPortReturn = ":GVP#"; }); _serialMock.Setup(x => x.Transmit(":GVP#")).Callback(() => { serialPortReturn = ":GVP#"; });
_serialMock.Setup(x => x.ReceiveTerminated("#")).Returns( () => serialPortReturn); _serialMock.Setup(x => x.ReceiveTerminated("#")).Returns( () => serialPortReturn);
var result = Assert.Throws<Exception>(() => { SharedResources.Connect(deviceId, string.Empty); }); var result = Assert.Throws<Exception>(() => { SharedResources.Connect(deviceId, string.Empty, _traceLoggerMock.Object); });
Assert.That(result.Message, Is.EqualTo("Serial port is looping back data, something is wrong with the hardware.")); Assert.That(result.Message, Is.EqualTo("Serial port is looping back data, something is wrong with the hardware."));
} }
@@ -251,7 +254,7 @@ namespace Meade.net.UnitTests
_serialMock.Setup(x => x.Transmit(":GVP#")).Callback(() => { }); _serialMock.Setup(x => x.Transmit(":GVP#")).Callback(() => { });
_serialMock.Setup(x => x.ReceiveTerminated("#")).Returns(() => throw new Exception("Testerror")); _serialMock.Setup(x => x.ReceiveTerminated("#")).Returns(() => throw new Exception("Testerror"));
var connectionResult = SharedResources.Connect(deviceId, string.Empty); var connectionResult = SharedResources.Connect(deviceId, string.Empty, _traceLoggerMock.Object);
try try
{ {
@@ -301,7 +304,7 @@ namespace Meade.net.UnitTests
_serialMock.Setup(x => x.Transmit(":GVN#")).Callback(() => { serialPortReturn = TelescopeList.Autostar497_43Eg; }); _serialMock.Setup(x => x.Transmit(":GVN#")).Callback(() => { serialPortReturn = TelescopeList.Autostar497_43Eg; });
_serialMock.Setup(x => x.ReceiveTerminated("#")).Returns(() => serialPortReturn); _serialMock.Setup(x => x.ReceiveTerminated("#")).Returns(() => serialPortReturn);
var connectionResult = SharedResources.Connect(deviceId, string.Empty); var connectionResult = SharedResources.Connect(deviceId, string.Empty, _traceLoggerMock.Object);
try try
{ {
Assert.That(connectionResult.SameDevice, Is.EqualTo(1)); Assert.That(connectionResult.SameDevice, Is.EqualTo(1));
+1 -1
View File
@@ -187,7 +187,7 @@ namespace ASCOM.Meade.net
try try
{ {
ReadProfile(); ReadProfile();
_sharedResourcesWrapper.Connect("Serial", DriverId); _sharedResourcesWrapper.Connect("Serial", DriverId, _tl);
try try
{ {
IsConnected = true; IsConnected = true;
+4 -2
View File
@@ -243,7 +243,7 @@ namespace ASCOM.Meade.net
/// </summary> /// </summary>
/// <param name="deviceId"></param> /// <param name="deviceId"></param>
/// <param name="driverId"></param> /// <param name="driverId"></param>
public static ConnectionInfo Connect(string deviceId, string driverId) public static ConnectionInfo Connect(string deviceId, string driverId, ITraceLogger traceLogger)
{ {
lock (LockObject) lock (LockObject)
{ {
@@ -273,14 +273,16 @@ namespace ASCOM.Meade.net
ProductName = SendString(":GVP#"); ProductName = SendString(":GVP#");
FirmwareVersion = SendString(":GVN#"); FirmwareVersion = SendString(":GVN#");
} }
catch (Exception) catch (Exception ex)
{ {
traceLogger.LogIssue("Connect", $"Error getting telescope information \"{ex.Message}\" setting to LX200 Classic mode.");
ProductName = TelescopeList.LX200CLASSIC; ProductName = TelescopeList.LX200CLASSIC;
FirmwareVersion = "Unknown"; FirmwareVersion = "Unknown";
} }
if (ProductName == ":GVP") if (ProductName == ":GVP")
{ {
traceLogger.LogIssue("Connect", "Serial port is looping back data, something is wrong with the hardware.");
//This means that the serial port is looping back what's been sent, something is very wrong. //This means that the serial port is looping back what's been sent, something is very wrong.
SharedSerial.Connected = false; SharedSerial.Connected = false;
+4 -3
View File
@@ -1,10 +1,11 @@
using System; using System;
using ASCOM.Utilities.Interfaces;
namespace ASCOM.Meade.net.Wrapper namespace ASCOM.Meade.net.Wrapper
{ {
public interface ISharedResourcesWrapper public interface ISharedResourcesWrapper
{ {
ConnectionInfo Connect(string deviceId, string driverId); ConnectionInfo Connect(string deviceId, string driverId, ITraceLogger traceLogger);
void Disconnect(string deviceId, string driverId); void Disconnect(string deviceId, string driverId);
string ProductName { get; } string ProductName { get; }
@@ -29,9 +30,9 @@ namespace ASCOM.Meade.net.Wrapper
public class SharedResourcesWrapper : ISharedResourcesWrapper public class SharedResourcesWrapper : ISharedResourcesWrapper
{ {
public ConnectionInfo Connect(string deviceId, string driverId) public ConnectionInfo Connect(string deviceId, string driverId, ITraceLogger traceLogger)
{ {
return SharedResources.Connect(deviceId, driverId); return SharedResources.Connect(deviceId, driverId, traceLogger);
} }
public void Disconnect(string deviceId, string driverId) public void Disconnect(string deviceId, string driverId)