Skip to content

Commit 527d4e6

Browse files
Added dynamic driver count support to Foc, FW, Dome, and Rot
1 parent 17ac398 commit 527d4e6

File tree

4 files changed

+257
-11
lines changed

4 files changed

+257
-11
lines changed

ASCOM.Alpaca.Simulators/DriverManager.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@ internal static void LoadDome(int DeviceID)
2424
DeviceManager.LoadDome(DeviceID, dev, dev.DeviceName, dev.UniqueID);
2525
}
2626

27+
internal static void LoadDomes()
28+
{
29+
for (int i = 0; i < ServerSettings.NumberOfDomes; i++)
30+
{
31+
LoadDome(i);
32+
}
33+
}
34+
2735
internal static void LoadFilterWheel(int DeviceID)
2836
{
2937
var dev = new ASCOM.Simulators.FilterWheel(DeviceID, new OmniSim.Tools.DualLogger(ServerSettings.LogFileNameDevice("FilterWheel", DeviceID), Logging.Log), new XMLProfile(ServerSettings.SettingsFolderName, DeviceManager.FilterWheel, (uint)DeviceID));
@@ -44,6 +52,14 @@ internal static void LoadFocuser(int DeviceID)
4452
DeviceManager.LoadFocuser(DeviceID, dev, dev.DeviceName, dev.UniqueID);
4553
}
4654

55+
internal static void LoadFocusers()
56+
{
57+
for (int i = 0; i < ServerSettings.NumberOfFocusers; i++)
58+
{
59+
LoadFocuser(i);
60+
}
61+
}
62+
4763
internal static void LoadObservingConditions(int DeviceID)
4864
{
4965
var dev = new ASCOM.Simulators.ObservingConditions(DeviceID, Logging.Log, new XMLProfile(ServerSettings.SettingsFolderName, DeviceManager.ObservingCondition, (uint)DeviceID));
@@ -56,6 +72,14 @@ internal static void LoadRotator(int DeviceID)
5672
DeviceManager.LoadRotator(DeviceID, dev, dev.DeviceName, dev.UniqueID);
5773
}
5874

75+
internal static void LoadRotators()
76+
{
77+
for (int i = 0; i < ServerSettings.NumberOfRotators; i++)
78+
{
79+
LoadRotator(i);
80+
}
81+
}
82+
5983
internal static void LoadSafetyMonitor(int DeviceID)
6084
{
6185
var dev = new ASCOM.Simulators.SafetyMonitor(DeviceID, Logging.Log, new XMLProfile(ServerSettings.SettingsFolderName, DeviceManager.SafetyMonitor, (uint)DeviceID));

ASCOM.Alpaca.Simulators/Pages/Setup.razor

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,21 +114,37 @@
114114

115115
<fieldset>
116116
<legend>Driver Settings</legend>
117+
<p>Note: reducing the number of drivers requires a restart to apply</p>
117118
<div class="grid-container-two">
118119
<div class="grid-item-right">
119120
<span>Prevent Disconnects:</span>
120121
</div>
121122
<div class="grid-item-left">
122123
<input type="checkbox" @bind="PreventRemoteDisconnects">
123124
</div>
124-
<p>Note: reducing the number of drivers requires a restart to apply</p>
125125
<div class="grid-item-right">
126-
<span>Number of FilterWheels:</span>
126+
<span>Number of Domes:</span>
127+
</div>
128+
<div class="grid-item-left">
129+
<input type="number" @bind="NDomes" min="1" max="4" style="width:20ch;">
130+
</div>
131+
<div class="grid-item-right">
132+
<span>Number of Filter Wheels:</span>
127133
</div>
128134
<div class="grid-item-left">
129135
<input type="number" @bind="NFilterWheels" min="1" max="4" style="width:20ch;">
130136
</div>
131137
<div class="grid-item-right">
138+
<span>Number of Focusers:</span>
139+
</div>
140+
<div class="grid-item-left">
141+
<input type="number" @bind="NFocusers" min="1" max="4" style="width:20ch;">
142+
</div>
143+
<div class="grid-item-right">
144+
<span>Number of Rotators:</span>
145+
</div>
146+
<div class="grid-item-left">
147+
<input type="number" @bind="NRotators" min="1" max="4" style="width:20ch;">
132148
</div>
133149
<div class="grid-item-right">
134150
<button @onclick="SaveDriverSettings" style="min-width:12ch; vertical-align:middle;">Save</button>
@@ -316,12 +332,30 @@
316332
set;
317333
} = ServerSettings.DiscoveryPort;
318334

335+
UInt16 NDomes
336+
{
337+
get;
338+
set;
339+
} = ServerSettings.NumberOfDomes;
340+
319341
UInt16 NFilterWheels
320342
{
321343
get;
322344
set;
323345
} = ServerSettings.NumberOfFilterWheels;
324346

347+
UInt16 NFocusers
348+
{
349+
get;
350+
set;
351+
} = ServerSettings.NumberOfFocusers;
352+
353+
UInt16 NRotators
354+
{
355+
get;
356+
set;
357+
} = ServerSettings.NumberOfRotators;
358+
325359
bool StrictAPIMode
326360
{
327361
get;
@@ -536,9 +570,19 @@
536570
try
537571
{
538572
ServerSettings.PreventRemoteDisconnects = PreventRemoteDisconnects;
573+
574+
ServerSettings.NumberOfDomes = NDomes;
575+
DriverManager.LoadDomes();
576+
539577
ServerSettings.NumberOfFilterWheels = NFilterWheels;
540578
DriverManager.LoadFilterWheels();
541579

580+
ServerSettings.NumberOfFocusers = NFocusers;
581+
DriverManager.LoadFocusers();
582+
583+
ServerSettings.NumberOfRotators = NRotators;
584+
DriverManager.LoadRotators();
585+
542586
DisplaySuccess("Driver Settings Saved");
543587
}
544588
catch (Exception ex)

ASCOM.Alpaca.Simulators/Program.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -210,13 +210,11 @@ private static Task InitServers(string[] args)
210210
//Load devices
211211
DriverManager.LoadCamera(0);
212212
DriverManager.LoadCoverCalibrator(0);
213-
DriverManager.LoadDome(0);
213+
DriverManager.LoadDomes();
214214
DriverManager.LoadFilterWheels();
215-
DriverManager.LoadFocuser(0);
216-
DriverManager.LoadFocuser(1);
215+
DriverManager.LoadFocusers();
217216
DriverManager.LoadObservingConditions(0);
218-
DriverManager.LoadRotator(0);
219-
DriverManager.LoadRotator(1);
217+
DriverManager.LoadRotators();
220218
DriverManager.LoadSafetyMonitor(0);
221219
DriverManager.LoadSwitch(0);
222220
DriverManager.LoadTelescope(0);
@@ -316,11 +314,11 @@ private static bool ProcessArgs(string[] args, bool existing_instance)
316314
//Load devices
317315
DriverManager.LoadCamera(0);
318316
DriverManager.LoadCoverCalibrator(0);
319-
DriverManager.LoadDome(0);
317+
DriverManager.LoadDomes();
320318
DriverManager.LoadFilterWheels();
321-
DriverManager.LoadFocuser(0);
319+
DriverManager.LoadFocusers();
322320
DriverManager.LoadObservingConditions(0);
323-
DriverManager.LoadRotator(0);
321+
DriverManager.LoadRotators();
324322
DriverManager.LoadSafetyMonitor(0);
325323
DriverManager.LoadSwitch(0);
326324
DriverManager.LoadTelescope(0);

ASCOM.Alpaca.Simulators/ServerSettings.cs

Lines changed: 181 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -433,13 +433,73 @@ internal static bool RunInStrictAlpacaMode
433433
}
434434

435435
#region Driver Creation Settings
436+
internal static ushort NumberOfCameras
437+
{
438+
get
439+
{
440+
if (ushort.TryParse(Profile.GetValue("NumberOfCameras", 1.ToString()), out ushort result))
441+
{
442+
if(result > 4)
443+
{
444+
return 4;
445+
}
446+
return result;
447+
}
448+
return 1;
449+
}
450+
set
451+
{
452+
Profile.WriteValue("NumberOfCameras", value.ToString());
453+
}
454+
}
455+
456+
internal static ushort NumberOfCoverCalibrators
457+
{
458+
get
459+
{
460+
if (ushort.TryParse(Profile.GetValue("NumberOfCoverCalibrators", 1.ToString()), out ushort result))
461+
{
462+
if (result > 4)
463+
{
464+
return 4;
465+
}
466+
return result;
467+
}
468+
return 1;
469+
}
470+
set
471+
{
472+
Profile.WriteValue("NumberOfCoverCalibrators", value.ToString());
473+
}
474+
}
475+
476+
internal static ushort NumberOfDomes
477+
{
478+
get
479+
{
480+
if (ushort.TryParse(Profile.GetValue("NumberOfDomes", 1.ToString()), out ushort result))
481+
{
482+
if (result > 4)
483+
{
484+
return 4;
485+
}
486+
return result;
487+
}
488+
return 1;
489+
}
490+
set
491+
{
492+
Profile.WriteValue("NumberOfDomes", value.ToString());
493+
}
494+
}
495+
436496
internal static ushort NumberOfFilterWheels
437497
{
438498
get
439499
{
440500
if (ushort.TryParse(Profile.GetValue("NumberOfFilterWheels", 1.ToString()), out ushort result))
441501
{
442-
if(result > 4)
502+
if (result > 4)
443503
{
444504
return 4;
445505
}
@@ -452,6 +512,126 @@ internal static ushort NumberOfFilterWheels
452512
Profile.WriteValue("NumberOfFilterWheels", value.ToString());
453513
}
454514
}
515+
516+
internal static ushort NumberOfFocusers
517+
{
518+
get
519+
{
520+
if (ushort.TryParse(Profile.GetValue("NumberOFocusers", 1.ToString()), out ushort result))
521+
{
522+
if (result > 4)
523+
{
524+
return 4;
525+
}
526+
return result;
527+
}
528+
return 1;
529+
}
530+
set
531+
{
532+
Profile.WriteValue("NumberOFocusers", value.ToString());
533+
}
534+
}
535+
536+
internal static ushort NumberOfObservingConditions
537+
{
538+
get
539+
{
540+
if (ushort.TryParse(Profile.GetValue("NumberOfObservingConditions", 1.ToString()), out ushort result))
541+
{
542+
if (result > 4)
543+
{
544+
return 4;
545+
}
546+
return result;
547+
}
548+
return 1;
549+
}
550+
set
551+
{
552+
Profile.WriteValue("NumberOfObservingConditions", value.ToString());
553+
}
554+
}
555+
556+
internal static ushort NumberOfRotators
557+
{
558+
get
559+
{
560+
if (ushort.TryParse(Profile.GetValue("NumberOfRotators", 1.ToString()), out ushort result))
561+
{
562+
if (result > 4)
563+
{
564+
return 4;
565+
}
566+
return result;
567+
}
568+
return 1;
569+
}
570+
set
571+
{
572+
Profile.WriteValue("NumberOfRotators", value.ToString());
573+
}
574+
}
575+
576+
internal static ushort NumberOfSafetyMonitors
577+
{
578+
get
579+
{
580+
if (ushort.TryParse(Profile.GetValue("NumberOfSafetyMonitors", 1.ToString()), out ushort result))
581+
{
582+
if (result > 4)
583+
{
584+
return 4;
585+
}
586+
return result;
587+
}
588+
return 1;
589+
}
590+
set
591+
{
592+
Profile.WriteValue("NumberOfSafetyMonitors", value.ToString());
593+
}
594+
}
595+
596+
internal static ushort NumberOfSwitches
597+
{
598+
get
599+
{
600+
if (ushort.TryParse(Profile.GetValue("NumberOfSwitches", 1.ToString()), out ushort result))
601+
{
602+
if (result > 4)
603+
{
604+
return 4;
605+
}
606+
return result;
607+
}
608+
return 1;
609+
}
610+
set
611+
{
612+
Profile.WriteValue("NumberOfSwitches", value.ToString());
613+
}
614+
}
615+
616+
internal static ushort NumberOfTelescopes
617+
{
618+
get
619+
{
620+
if (ushort.TryParse(Profile.GetValue("NumberOfTelescopes", 1.ToString()), out ushort result))
621+
{
622+
if (result > 4)
623+
{
624+
return 4;
625+
}
626+
return result;
627+
}
628+
return 1;
629+
}
630+
set
631+
{
632+
Profile.WriteValue("NumberOfTelescopes", value.ToString());
633+
}
634+
}
455635
#endregion
456636

457637
#region SSL Settings

0 commit comments

Comments
 (0)