Second and subsequent Connections to the telescope driver now no longer trigger resetting the Guide rate and precision. It's assumed they are already set correctly.

This commit is contained in:
2019-08-22 23:22:36 +01:00
parent 633babd967
commit c311fb8cbe
7 changed files with 78 additions and 26 deletions
+8
View File
@@ -0,0 +1,8 @@
namespace ASCOM.Meade.net
{
public class ConnectionInfo
{
public int Connections { get; set; }
public int SameDevice { get; set; }
}
}
+1
View File
@@ -122,6 +122,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ClassFactory.cs" />
<Compile Include="ConnectionInfo.cs" />
<Compile Include="frmMain.cs">
<SubType>Form</SubType>
</Compile>
+20 -2
View File
@@ -260,12 +260,15 @@ namespace ASCOM.Meade.net
/// </summary>
private static readonly Dictionary<string, DeviceHardware> _connectedDevices = new Dictionary<string, DeviceHardware>();
private static readonly Dictionary<string, DeviceHardware> _connectedDeviceIds = new Dictionary<string, DeviceHardware>();
/// <summary>
/// This is called in the driver Connect(true) property,
/// it add the device id to the list of devices if it's not there and increments the device count.
/// </summary>
/// <param name="deviceId"></param>
public static void Connect(string deviceId)
public static ConnectionInfo Connect(string deviceId, string driverId)
{
lock (LockObject)
{
@@ -273,6 +276,10 @@ namespace ASCOM.Meade.net
_connectedDevices.Add(deviceId, new DeviceHardware());
_connectedDevices[deviceId].Count++; // increment the value
if (!_connectedDeviceIds.ContainsKey(driverId))
_connectedDeviceIds.Add(driverId, new DeviceHardware());
_connectedDeviceIds[driverId].Count++; // increment the value
if (deviceId == "Serial")
{
if (_connectedDevices[deviceId].Count == 1)
@@ -292,10 +299,16 @@ namespace ASCOM.Meade.net
FirmwareVersion = SendString(":GVN#");
}
}
return new ConnectionInfo
{
Connections = _connectedDevices[deviceId].Count,
SameDevice = _connectedDeviceIds[driverId].Count
};
}
}
public static void Disconnect(string deviceId)
public static void Disconnect(string deviceId, string driverId)
{
lock (LockObject)
{
@@ -311,6 +324,11 @@ namespace ASCOM.Meade.net
}
}
}
if (_connectedDeviceIds.ContainsKey(driverId))
{
_connectedDeviceIds[driverId].Count--;
}
}
}
+6 -6
View File
@@ -4,8 +4,8 @@ namespace ASCOM.Meade.net.Wrapper
{
public interface ISharedResourcesWrapper
{
void Connect(string deviceId);
void Disconnect(string deviceId);
ConnectionInfo Connect(string deviceId, string driverId);
void Disconnect(string deviceId, string driverId);
string ProductName { get; }
@@ -29,14 +29,14 @@ namespace ASCOM.Meade.net.Wrapper
public class SharedResourcesWrapper : ISharedResourcesWrapper
{
public void Connect(string deviceId)
public ConnectionInfo Connect(string deviceId, string driverId)
{
SharedResources.Connect( deviceId);
return SharedResources.Connect(deviceId, driverId);
}
public void Disconnect(string deviceId)
public void Disconnect(string deviceId, string driverId)
{
SharedResources.Disconnect(deviceId);
SharedResources.Disconnect(deviceId, driverId);
}
public string ProductName => SharedResources.ProductName;